I'm getting an error when I run Cypress with the --project option
If you use the --project
option in Cypress to run tests only from a specified directory like this:
$(npm bin)/knapsack-pro-cypress --project subdirectory
It can lead to a problem when the CI build is rerun with test files cached on the Knapsack Pro API side when you use the environment variable KNAPSACK_PRO_FIXED_QUEUE_SPLIT=true
. The recorded test file paths (cached test files) will be relative to the subdirectory
instead of the root project directory. When you subsequently retry the CI build, @knapsack-pro/cypress
will try to run the test files with paths relative to the subdirectory
, even though you are invoking the $(npm bin)/knapsack-pro-cypress
command outside of the subdirectory
. This can lead to a bug described in the issue.
You need to tell @knapsack-pro/cypress
(and not just the Cypress process) which test files should be run.
We recommend using an environment variable KNAPSACK_PRO_TEST_FILE_PATTERN
to define a pattern for test files that should be run. Please read this to understand how to define a valid KNAPSACK_PRO_TEST_FILE_PATTERN
.
For example, you could run tests from subdirectory
this way:
export KNAPSACK_PRO_TEST_FILE_PATTERN="subdirectory/cypress/e2e/**/*.{js,jsx,coffee,cjsx}" $(npm bin)/knapsack-pro-cypress
When you still want to use --project
option
If for any reason you need to use the --project
option, you could achieve that in the following way. Add a command in your package.json
that will enter the subdirectory
and execute @knapsack-pro/cypress
from it.
{
"scripts": {
"knapsack-pro-cypress-for-subdirectory": "cd subdirectory && knapsack-pro-cypress"
},
}
then run it from your CI:
$ npm run knapsack-pro-cypress-for-subdirectory
This way, when you rerun the CI build the above command will run @knapsack-pro/cypress
from inside of subdirectory
so that the recorded test files during the first CI build run can be loaded properly.