@bahmutov/cy-grep 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +23 -15
- package/package.json +1 -1
- package/src/plugin.js +9 -10
package/README.md
CHANGED
@@ -19,7 +19,7 @@ All other tests will be marked pending, see why in the [Cypress test statuses](h
|
|
19
19
|
|
20
20
|
If you have multiple spec files, all specs will be loaded, and every test will be filtered the same way, since the grep is run-time operation and cannot eliminate the spec files without loading them. If you want to run only specific tests, use the built-in [--spec](https://on.cypress.io/command-line#cypress-run-spec-lt-spec-gt) CLI argument.
|
21
21
|
|
22
|
-
Watch the video [intro to cypress-grep plugin](https://www.youtube.com/watch?v=HS-Px-Sghd8)
|
22
|
+
Watch the video [intro to cypress-grep plugin](https://www.youtube.com/watch?v=HS-Px-Sghd8) and study my 🎓 Cypress course [Cypress Plugins](https://cypress.tips/courses/cypress-plugins).
|
23
23
|
|
24
24
|
Table of Contents
|
25
25
|
|
@@ -81,7 +81,8 @@ yarn add -D @bahmutov/cy-grep
|
|
81
81
|
**required:** load this module from the [support file](https://on.cypress.io/writing-and-organizing-tests#Support-file) or at the top of the spec file if not using the support file. You import the registration function and then call it:
|
82
82
|
|
83
83
|
```js
|
84
|
-
// cypress/support/
|
84
|
+
// cypress/support/e2e.js
|
85
|
+
|
85
86
|
// load and register the grep feature using "require" function
|
86
87
|
// https://github.com/bahmutov/cy-grep
|
87
88
|
const registerCypressGrep = require('@bahmutov/cy-grep')
|
@@ -90,7 +91,7 @@ registerCypressGrep()
|
|
90
91
|
// if you want to use the "import" keyword
|
91
92
|
// note: `./index.d.ts` currently extends the global Cypress types and
|
92
93
|
// does not define `registerCypressGrep` so the import path is directly
|
93
|
-
// pointed to the
|
94
|
+
// pointed to the support file
|
94
95
|
import registerCypressGrep from '@bahmutov/cy-grep/src/support'
|
95
96
|
registerCypressGrep()
|
96
97
|
|
@@ -111,13 +112,14 @@ registerCypressGrep()
|
|
111
112
|
e2e: {
|
112
113
|
setupNodeEvents(on, config) {
|
113
114
|
require('@bahmutov/cy-grep/src/plugin')(config);
|
115
|
+
// IMPORTANT: return the config object
|
114
116
|
return config;
|
115
|
-
|
117
|
+
},
|
116
118
|
}
|
117
119
|
}
|
118
120
|
```
|
119
121
|
|
120
|
-
Installing the plugin via `setupNodeEvents()` is required to enable the [grepFilterSpecs](#grepfilterspecs) feature.
|
122
|
+
Installing the plugin via `setupNodeEvents()` is required to enable the [grepFilterSpecs](#pre-filter-specs-grepfilterspecs) feature.
|
121
123
|
|
122
124
|
## Usage Overview
|
123
125
|
|
@@ -353,9 +355,12 @@ $ npx cypress run --env grepTags=@smoke,grepFilterSpecs=true
|
|
353
355
|
**Tip:** you can set this environment variable in the [config file](https://docs.cypress.io/guides/references/configuration) file to enable it by default and skip using the environment variable:
|
354
356
|
|
355
357
|
```js
|
358
|
+
// config file
|
356
359
|
{
|
357
|
-
"
|
358
|
-
"
|
360
|
+
"e2e": {
|
361
|
+
"env": {
|
362
|
+
"grepFilterSpecs": true
|
363
|
+
}
|
359
364
|
}
|
360
365
|
}
|
361
366
|
```
|
@@ -505,20 +510,23 @@ Once the tests finish, you can run just the failed tests from DevTools console
|
|
505
510
|
|
506
511
|
**Tip:** use `Cypress.grep()` to reset and run all the tests
|
507
512
|
|
513
|
+
📝 Read the blog post [Run Just The Failed Tests In Cypress](https://glebbahmutov.com/blog/run-failed-tests/).
|
514
|
+
|
508
515
|
## Debugging
|
509
516
|
|
510
|
-
When debugging a problem, first make sure you are using the expected version of this plugin, as some features might be only available in the [later releases](https://github.com/
|
517
|
+
When debugging a problem, first make sure you are using the expected version of this plugin, as some features might be only available in the [later releases](https://github.com/bahmutov/cy-grep/releases).
|
511
518
|
|
512
519
|
```
|
513
|
-
# get the
|
514
|
-
$ npm ls
|
520
|
+
# get the plugin's version using NPM
|
521
|
+
$ npm ls @bahmutov/cy-grep
|
515
522
|
...
|
516
|
-
└──
|
517
|
-
|
518
|
-
|
523
|
+
└── @bahmutov/cy-grep@1.1.0
|
524
|
+
|
525
|
+
# get the plugin's version using Yarn
|
526
|
+
$ yarn why @bahmutov/cy-grep
|
519
527
|
...
|
520
|
-
=> Found "
|
521
|
-
info Has been hoisted to "
|
528
|
+
=> Found "@bahmutov/cy-grep@1.1.0"
|
529
|
+
info Has been hoisted to "@bahmutov/cy-grep"
|
522
530
|
info This module exists because it's specified in "devDependencies".
|
523
531
|
...
|
524
532
|
```
|
package/package.json
CHANGED
package/src/plugin.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
const debug = require('debug')('cypress-grep')
|
2
2
|
const globby = require('globby')
|
3
|
-
const { getTestNames } = require('find-test-names')
|
3
|
+
const { getTestNames, findEffectiveTestTags } = require('find-test-names')
|
4
4
|
const fs = require('fs')
|
5
5
|
const { version } = require('../package.json')
|
6
6
|
const { parseGrep, shouldTestRun } = require('./utils')
|
@@ -9,7 +9,7 @@ const { parseGrep, shouldTestRun } = require('./utils')
|
|
9
9
|
* Prints the cypress-grep environment values if any.
|
10
10
|
* @param {Cypress.ConfigOptions} config
|
11
11
|
*/
|
12
|
-
function cypressGrepPlugin
|
12
|
+
function cypressGrepPlugin(config) {
|
13
13
|
if (!config || !config.env) {
|
14
14
|
return config
|
15
15
|
}
|
@@ -117,15 +117,14 @@ function cypressGrepPlugin (config) {
|
|
117
117
|
const text = fs.readFileSync(specFile, { encoding: 'utf8' })
|
118
118
|
|
119
119
|
try {
|
120
|
-
const
|
121
|
-
|
120
|
+
const testTags = findEffectiveTestTags(text)
|
121
|
+
// we get back a single object with keys being full test titles
|
122
|
+
// and the values being arrays of effective test tags
|
122
123
|
debug('spec file %s', specFile)
|
123
|
-
debug('test
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
return shouldRun
|
124
|
+
debug('effective test tags %o', testTags)
|
125
|
+
return Object.keys(testTags).some((testTitle) => {
|
126
|
+
const effectiveTags = testTags[testTitle]
|
127
|
+
return shouldTestRun(parsedGrep, null, effectiveTags)
|
129
128
|
})
|
130
129
|
} catch (err) {
|
131
130
|
console.error('Could not determine test names in file: %s', specFile)
|