browserstack / browserstack-cypress-cli

NPM package for the customers to run Cypress on Browserstack Infra
MIT License
52 stars 40 forks source link

Support for Cypress 10.0.x #342

Open kmgalanakis opened 2 years ago

kmgalanakis commented 2 years ago

Hello. Is the CLI going to be updated to support Cypress 10.0.0 and above? Thank you

pranavj1001 commented 2 years ago

Hey, support for cypress 10.x.x is currently in progress on BrowserStack and will be released soon.

Taapsa commented 2 years ago

Hey, support for cypress 10.x.x is currently in progress on BrowserStack and will be released soon.

Hi, any guesstimate when this would happen, weeks, months?

renatobenks commented 2 years ago

hey @pranavj1001, any estimates on when BrowserStack will get support to cypress latest?

pranavj1001 commented 2 years ago

BrowserStack now supports Cypress 10. Please update the browserstack-cypress-cli to start running your tests using Cypress 10 on BrowserStack. Here's the link for the docs page.

slowjack2k commented 2 years ago

Does this mean cypress.config.ts is supported as well? With my first try I got a TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for .\cypress.config.ts

Ross-mc commented 2 years ago

I am also having this same error. Browserstack json below:

"run_settings": {
    "cypress_config_file": "./cypress/cypress.config.ts",
    "project_name": "project-name",
    "build_name": "build-name",
    "exclude": [],
    "parallels": "2",
    "npm_dependencies": {},
    "package_config_options": {},
    "headless": true,
    "cypress_version": "10"
  }

I am using Cypress v10.3.0 and my Cypress tests run fine.

dspaeth-breuni commented 2 years ago

I was able to get my tests running, but it was not fun. I needed to compile the ts files to js. I used tsc --outDir ./dist/cypress --resolveJsonModule.

Further more it was important to add cypress, as an npm_dependencies,

"run_settings": {
        ...
        "npm_dependencies": {
            "cypress": "10.3.0"
        },
        ...
    },

because my cypress.config.ts includes an

import {defineConfig} from 'cypress';

After this I needed to copy some files here and there. I don't think it's practical at the moment.

Taapsa commented 2 years ago

Same thing without TypeScript. If cypress.config.js contains const { defineConfig } = require("cypress");

You have to give cypress in npm_dependencies. If not CLI returns


Require stack:
- ./cypress.config.js
- /root/node_modules/@packages/server/lib/plugins/child/run_require_async_child.js
- /root/node_modules/@packages/server/lib/plugins/child/require_async_child.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at Object.<anonymous> (./cypress.config.js:1:26)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at loadFile (/root/node_modules/@packages/server/lib/plugins/child/run_require_async_child.js:89:14)
    at EventEmitter.<anonymous> (/root/node_modules/@packages/server/lib/plugins/child/run_require_async_child.js:116:38)
    at EventEmitter.emit (events.js:400:28)
    at process.<anonymous> (/root/node_modules/@packages/server/lib/plugins/util.js:33:22)
    at process.emit (events.js:400:28)```
dspaeth-breuni commented 2 years ago

will there be typescript support for cypress 10.x in the near feature?

jean-bernard-valentaten commented 4 months ago

In case you came here because you used TypeScript configuration files for Cypress (which is not mandatory and therefore not a dependency of the cypress package), here is the solution to your problem. The following changes must be made to your browserstack.json:

{
    "run_settings": {
        "cypress_config_file": "./cypress.config.ts",
        "cypress_version": "13.latest",
        "npm_dependencies": {
            "typescript": "^4.6.3"
        }
    }
}

This will tell browserstack-cypress-cli to use the latest Cypress 13 version and add the typescript package to the list of packages that is being generated by browserstack-cypress-cli. In case you're planning to use a different version of Cypress, have a look here at how to write the version constraint: https://www.browserstack.com/docs/automate/cypress/supported-versions

As for adding further dependencies, have a look here: https://www.browserstack.com/docs/automate/cypress/npm-packages