@bahmutov/cy-grep 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # @bahmutov/cy-grep ![cypress version](https://img.shields.io/badge/cypress-15.4.0-brightgreen)
1
+ # @bahmutov/cy-grep ![cypress version](https://img.shields.io/badge/cypress-15.5.0-brightgreen)
2
2
 
3
3
  > Filter tests using substring or tag
4
4
 
5
5
  ```shell
6
6
  # run only tests with "hello" in their names
7
- npx cypress run --env grep=hello
7
+ npx cypress run --expose grep=hello
8
8
 
9
9
  ✓ hello world
10
10
  - works
@@ -147,11 +147,11 @@ registerCypressGrep()
147
147
 
148
148
  Installing the plugin via `setupNodeEvents()` is required to enable the [grepFilterSpecs](#pre-filter-specs-grepfilterspecs) feature.
149
149
 
150
- **Tip:** you probably want to set these `env` settings in your config file
150
+ **Tip:** you probably want to set these `expose` settings in your config file
151
151
 
152
152
  ```js
153
153
  module.exports = defineConfig({
154
- env: { grepFilterSpecs: true, grepOmitFiltered: true },
154
+ expose: { grepFilterSpecs: true, grepOmitFiltered: true },
155
155
  ...
156
156
  })
157
157
  ```
@@ -193,7 +193,7 @@ Put the common settings into `cypress.json`
193
193
 
194
194
  ```json
195
195
  {
196
- "env": {
196
+ "expose": {
197
197
  "grepOmitFiltered": true,
198
198
  "grepFilterSpecs": true
199
199
  }
@@ -210,40 +210,40 @@ Here are a few examples:
210
210
 
211
211
  ```shell
212
212
  # run only the tests with "auth user" in the title
213
- $ npx cypress run --env grep="auth user"
213
+ $ npx cypress run --expose grep="auth user"
214
214
  # run tests with "hello" or "auth user" in their titles
215
215
  # by separating them with ";" character
216
- $ npx cypress run --env grep="hello; auth user"
216
+ $ npx cypress run --expose grep="hello; auth user"
217
217
  # run tests tagged @fast
218
- $ npx cypress run --env grepTags=@fast
218
+ $ npx cypress run --expose grepTags=@fast
219
219
  # run only the tests tagged "smoke"
220
220
  # that have "login" in their titles
221
- $ npx cypress run --env grep=login,grepTags=smoke
221
+ $ npx cypress run --expose grep=login,grepTags=smoke
222
222
  # only run the specs that have any tests with "user" in their titles
223
- $ npx cypress run --env grep=user,grepFilterSpecs=true
223
+ $ npx cypress run --expose grep=user,grepFilterSpecs=true
224
224
  # only run the specs that have any tests tagged "@smoke"
225
- $ npx cypress run --env grepTags=@smoke,grepFilterSpecs=true
225
+ $ npx cypress run --expose grepTags=@smoke,grepFilterSpecs=true
226
226
  # run only tests that do not have any tags
227
227
  # and are not inside suites that have any tags
228
- $ npx cypress run --env grepUntagged=true
228
+ $ npx cypress run --expose grepUntagged=true
229
229
  ```
230
230
 
231
- You can use any way to modify the environment values `grep` and `grepTags`, except the run-time `Cypress.env('grep')` (because it is too late at run-time). You can set the `grep` value in the `cypress.json` file to run only tests with the substring `viewport` in their names
231
+ You can use any way to modify the environment values `grep` and `grepTags`, except the run-time `Cypress.expose('grep')` (because it is too late at run-time). You can set the `grep` value in the `cypress.json` file to run only tests with the substring `viewport` in their names
232
232
 
233
233
  ```json
234
234
  {
235
- "env": {
235
+ "expose": {
236
236
  "grep": "viewport"
237
237
  }
238
238
  }
239
239
  ```
240
240
 
241
- You can also set the `env.grep` object in the plugin file, but remember to return the changed config object:
241
+ You can also set the `expose.grep` object in the plugin file, but remember to return the changed config object:
242
242
 
243
243
  ```js
244
244
  // cypress/plugin/index.js
245
245
  module.exports = (on, config) => {
246
- config.env.grep = 'viewport'
246
+ config.expose.grep = 'viewport'
247
247
  return config
248
248
  }
249
249
  ```
@@ -254,9 +254,9 @@ You can also set the grep and grepTags from the DevTools console while running C
254
254
 
255
255
  ```shell
256
256
  # run all tests with "hello" in their title
257
- $ npx cypress run --env grep=hello
257
+ $ npx cypress run --expose grep=hello
258
258
  # run all tests with "hello world" in their title
259
- $ npx cypress run --env grep="hello world"
259
+ $ npx cypress run --expose grep="hello world"
260
260
  ```
261
261
 
262
262
  ### OR substring matching
@@ -265,7 +265,7 @@ You can pass multiple title substrings to match separating them with `;` charact
265
265
 
266
266
  ```shell
267
267
  # run all tests with "hello world" or "auth user" in their title
268
- $ npx cypress run --env grep="hello world; auth user"
268
+ $ npx cypress run --expose grep="hello world; auth user"
269
269
  ```
270
270
 
271
271
  ### Test suites
@@ -282,7 +282,7 @@ describe('block for config', () => {
282
282
 
283
283
  ```
284
284
  # run any tests in the blocks including "config"
285
- --env grep=config
285
+ --expose grep=config
286
286
  ```
287
287
 
288
288
  **Note:** global function `describe` and `context` are aliases and both supported by this plugin.
@@ -291,22 +291,22 @@ describe('block for config', () => {
291
291
 
292
292
  ```shell
293
293
  # run all tests WITHOUT "hello world" in their title
294
- $ npx cypress run --env grep="-hello world"
294
+ $ npx cypress run --expose grep="-hello world"
295
295
  # run tests with "hello", but without "world" in the titles
296
- $ npx cypress run --env grep="hello; -world"
296
+ $ npx cypress run --expose grep="hello; -world"
297
297
  ```
298
298
 
299
299
  ## Filter with tags
300
300
 
301
- You can select tests to run or skip using tags by passing `--env grepTags=...` value.
301
+ You can select tests to run or skip using tags by passing `--expose grepTags=...` value.
302
302
 
303
303
  ```
304
304
  # enable the tests with tag "one" or "two"
305
- --env grepTags="one two"
305
+ --expose grepTags="one two"
306
306
  # enable the tests with both tags "one" and "two"
307
- --env grepTags="one+two"
307
+ --expose grepTags="one+two"
308
308
  # enable the tests with "hello" in the title and tag "smoke"
309
- --env grep=hello,grepTags=smoke
309
+ --expose grep=hello,grepTags=smoke
310
310
  ```
311
311
 
312
312
  If you can pass commas in the environment variable `grepTags`, you can use `,` to separate the tags
@@ -319,7 +319,7 @@ CYPRESS_grepTags=one,two npx cypress run
319
319
  If a specific tag is not found in the specs, you will get a warning in the terminal:
320
320
 
321
321
  ```
322
- $ npx cypress run --env grepTags=@wrong-tag
322
+ $ npx cypress run --expose grepTags=@wrong-tag
323
323
  cy-grep: could not find the tag "@wrong-tag" in any of the specs
324
324
  ```
325
325
 
@@ -337,14 +337,14 @@ it('works as a string', { tags: 'config' }, () => {
337
337
  })
338
338
  ```
339
339
 
340
- You can run both of these tests using `--env grepTags=config` string.
340
+ You can run both of these tests using `--expose grepTags=config` string.
341
341
 
342
342
  ### AND tags
343
343
 
344
344
  Use `+` to require both tags to be present
345
345
 
346
346
  ```
347
- --env grepTags=@smoke+@fast
347
+ --expose grepTags=@smoke+@fast
348
348
  ```
349
349
 
350
350
  ### OR tags
@@ -353,7 +353,7 @@ You can run tests that match one tag or another using spaces. Make sure to quote
353
353
 
354
354
  ```
355
355
  # run tests with tags "@slow" or "@critical" in their names
356
- --env grepTags='@slow @critical'
356
+ --expose grepTags='@slow @critical'
357
357
  ```
358
358
 
359
359
  ### Inverted tags
@@ -362,13 +362,13 @@ You can skip running the tests with specific tag using the invert option: prefix
362
362
 
363
363
  ```
364
364
  # do not run any tests with tag "@slow"
365
- --env grepTags=-@slow
365
+ --expose grepTags=-@slow
366
366
  ```
367
367
 
368
368
  If you want to run all tests with tag `@slow` but without tag `@smoke`:
369
369
 
370
370
  ```
371
- --env grepTags=@slow+-@smoke
371
+ --expose grepTags=@slow+-@smoke
372
372
  ```
373
373
 
374
374
  **Note:** Inverted tag filter is not compatible with the `grepFilterSpecs` option
@@ -382,13 +382,13 @@ Note this is the same as appending `+-<tag to never run>` to each tag. May be us
382
382
  If you want to run tests with tags `@slow` or `@regression` but without tag `@smoke`
383
383
 
384
384
  ```
385
- --env grepTags='@slow @regression --@smoke'
385
+ --expose grepTags='@slow @regression --@smoke'
386
386
  ```
387
387
 
388
388
  which is equivalent to
389
389
 
390
390
  ```
391
- --env grepTags='@slow+-@smoke @regression+-@smoke'
391
+ --expose grepTags='@slow+-@smoke @regression+-@smoke'
392
392
  ```
393
393
 
394
394
  ### Tags in test suites
@@ -401,9 +401,9 @@ describe('block with config tag', { tags: '@smoke' }, () => {})
401
401
 
402
402
  ```
403
403
  # run any tests in the blocks having "@smoke" tag
404
- --env grepTags=@smoke
404
+ --expose grepTags=@smoke
405
405
  # skip any blocks with "@smoke" tag
406
- --env grepTags=-@smoke
406
+ --expose grepTags=-@smoke
407
407
  ```
408
408
 
409
409
  See the [cypress/integration/describe-tags-spec.js](./cypress/integration/describe-tags-spec.js) file.
@@ -415,18 +415,18 @@ See the [cypress/integration/describe-tags-spec.js](./cypress/integration/descri
415
415
  Sometimes you want to run only the tests without any tags, and these tests are inside the describe blocks without any tags.
416
416
 
417
417
  ```
418
- $ npx cypress run --env grepUntagged=true
418
+ $ npx cypress run --expose grepUntagged=true
419
419
  ```
420
420
 
421
421
  ### Access the tags in the test
422
422
 
423
- You can check the current test's tags (including its parent suites) by checking the `Cypress.env('testTags')` list
423
+ You can check the current test's tags (including its parent suites) by checking the `Cypress.expose('testTags')` list
424
424
 
425
425
  ```js
426
426
  describe('parent', { tags: ['@p1', '@p2'] }, () => {
427
427
  describe('child', { tags: '@c1' }, () => {
428
428
  it('has all effective test tags', { tags: '@t1' }, () => {
429
- const tags = Cypress.env('testTags')
429
+ const tags = Cypress.expose('testTags')
430
430
  // includes tags from the parent suites and the test itself
431
431
  expect(tags, 'tags').to.deep.equal(['@p1', '@p2', '@c1', '@t1'])
432
432
  })
@@ -434,7 +434,7 @@ describe('parent', { tags: ['@p1', '@p2'] }, () => {
434
434
  })
435
435
  ```
436
436
 
437
- Additionally, you can check both tags and required tags for each test within the current spec by checking the `Cypress.env('specTags')` object
437
+ Additionally, you can check both tags and required tags for each test within the current spec by checking the `Cypress.expose('specTags')` object
438
438
 
439
439
  See [spec.js](./cypress/e2e/spec.js) for practical test spec example.
440
440
 
@@ -476,12 +476,12 @@ Example output:
476
476
 
477
477
  By default, when using `grep` and `grepTags` all specs are executed, and inside each the filters are applied. This can be very wasteful, if only a few specs contain the `grep` in the test titles. Thus when doing the positive `grep`, you can pre-filter specs using the `grepFilterSpecs=true` parameter.
478
478
 
479
- ```
479
+ ```shell
480
480
  # filter all specs first, and only run the ones with
481
481
  # suite or test titles containing the string "it loads"
482
- $ npx cypress run --env grep="it loads",grepFilterSpecs=true
482
+ $ npx cypress run --expose grep="it loads",grepFilterSpecs=true
483
483
  # filter all specs files, only run the specs with a tag "@smoke"
484
- $ npx cypress run --env grepTags=@smoke,grepFilterSpecs=true
484
+ $ npx cypress run --expose grepTags=@smoke,grepFilterSpecs=true
485
485
  ```
486
486
 
487
487
  **Note 1:** this requires installing this plugin in your project's plugin file, see the [Install](#install).
@@ -510,7 +510,7 @@ By default, all filtered tests are made _pending_ using `it.skip` method. If you
510
510
  Pending filtered tests
511
511
 
512
512
  ```
513
- cypress run --env grep="works 2"
513
+ cypress run --expose grep="works 2"
514
514
  ```
515
515
 
516
516
  ![Pending tests](./images/includes-pending.png)
@@ -518,7 +518,7 @@ cypress run --env grep="works 2"
518
518
  Omit filtered tests
519
519
 
520
520
  ```
521
- cypress run --env grep="works 2",grepOmitFiltered=true
521
+ cypress run --expose grep="works 2",grepOmitFiltered=true
522
522
  ```
523
523
 
524
524
  ![Only running tests remaining](./images/omit-pending.png)
@@ -538,7 +538,7 @@ cypress run --env grep="works 2",grepOmitFiltered=true
538
538
  If you specify the `grep` parameters the [config file](https://docs.cypress.io/guides/references/configuration), you can disable it from the command line
539
539
 
540
540
  ```
541
- $ npx cypress run --env grep=,grepTags=,burn=
541
+ $ npx cypress run --expose grep=,grepTags=,burn=
542
542
  ```
543
543
 
544
544
  ## Burn (repeat) tests
@@ -546,7 +546,7 @@ $ npx cypress run --env grep=,grepTags=,burn=
546
546
  You can burn the filtered tests to make sure they are flake-free
547
547
 
548
548
  ```
549
- npx cypress run --env grep="hello world",burn=5
549
+ npx cypress run --expose grep="hello world",burn=5
550
550
  ```
551
551
 
552
552
  You can pass the number of times to run the tests via environment name `burn` or `grepBurn` or `grep-burn`. Note, if a lot of tests match the grep and grep tags, a lot of tests will be burnt!
@@ -558,7 +558,7 @@ If you do not specify the "grep" or "grep tags" option, the "burn" will repeat _
558
558
  Sometimes you want to pre-filter specs using tags AND then run extra specs without any filtering. You can set the list of specs / patterns using the `grepExtraSpecs` env string. For example, to filter specs using tag `@a` plus run the spec "b.cy.js":
559
559
 
560
560
  ```
561
- npx cypress run --env grepTags=@a,grepExtraSpecs=cypress/e2e/b.cy.js
561
+ npx cypress run --expose grepTags=@a,grepExtraSpecs=cypress/e2e/b.cy.js
562
562
  ```
563
563
 
564
564
  ## Required tags
@@ -569,7 +569,7 @@ Sometimes you might want to run a test or a suite of tests _only_ if a specific
569
569
  it('cleans up the data', { requiredTags: '@nightly' }, () => {...})
570
570
  ```
571
571
 
572
- When you run the tests now, this test will be skipped, as if it were `it.skip`. It will only run if you use the tag `@nightly`, for example: `npx cypress run --env grepTags=@nightly`.
572
+ When you run the tests now, this test will be skipped, as if it were `it.skip`. It will only run if you use the tag `@nightly`, for example: `npx cypress run --expose grepTags=@nightly`.
573
573
 
574
574
  If `grepFilterSpecs=true` and a spec has only required tags, and you are running without any tags, the the spec will be skipped completely.
575
575
 
@@ -593,7 +593,7 @@ describe('projects', () => {
593
593
  })
594
594
  ```
595
595
 
596
- You can run the tests inside the suite "projects" by using `--env grep=projects` and you can skip the tests in the suite `projects` by using `--env grep=-projects`.
596
+ You can run the tests inside the suite "projects" by using `--expose grep=projects` and you can skip the tests in the suite `projects` by using `--expose grep=-projects`.
597
597
 
598
598
  ## TypeScript support
599
599
 
@@ -653,16 +653,16 @@ Using test tags that start with `@` is so common, you can enforce it using the e
653
653
  # use { tags: '@tag1' } in your tests
654
654
 
655
655
  # then these two are equivalent
656
- --env grepTags=@tag1
657
- --env grepTags=tag1
656
+ --expose grepTags=@tag1
657
+ --expose grepTags=tag1
658
658
  ```
659
659
 
660
660
  ## grepSpec
661
661
 
662
- If the user selected spec(s) to run, then it might conflict with `grepFilterSpecs=true` that filters the specs. There is no way to "know" if the user used `--spec <...>` option when the plugin runs, see issues [33](https://github.com/bahmutov/cy-grep/issues/33) and [26032](https://github.com/cypress-io/cypress/issues/26032). Thus if you use `--spec pattern`, you need to pass it to the plugin via `CYPRESS_grepSpec=pattern` or `--env grepSpec=pattern` option.
662
+ If the user selected spec(s) to run, then it might conflict with `grepFilterSpecs=true` that filters the specs. There is no way to "know" if the user used `--spec <...>` option when the plugin runs, see issues [33](https://github.com/bahmutov/cy-grep/issues/33) and [26032](https://github.com/cypress-io/cypress/issues/26032). Thus if you use `--spec pattern`, you need to pass it to the plugin via `CYPRESS_grepSpec=pattern` or `--expose grepSpec=pattern` option.
663
663
 
664
664
  ```
665
- cypress run --spec a.cy.js --env grepTags=...,grepSpec=a.cy.js
665
+ cypress run --spec a.cy.js --expose grepTags=...,grepSpec=a.cy.js
666
666
  ```
667
667
 
668
668
  ## General advice
@@ -686,13 +686,13 @@ Grepping the tests
686
686
 
687
687
  ```shell
688
688
  # run the tests by title
689
- $ npx cypress run --env grep="works quickly"
689
+ $ npx cypress run --expose grep="works quickly"
690
690
  # run all tests tagged @smoke
691
- $ npx cypress run --env grepTags=@smoke
691
+ $ npx cypress run --expose grepTags=@smoke
692
692
  # run all tests except tagged @smoke
693
- $ npx cypress run --env grepTags=-@smoke
693
+ $ npx cypress run --expose grepTags=-@smoke
694
694
  # run all tests that have tag @fast but do not have tag @smoke
695
- $ npx cypress run --env grepTags=@fast+-@smoke
695
+ $ npx cypress run --expose grepTags=@fast+-@smoke
696
696
  ```
697
697
 
698
698
  I would run all tests by default, and grep tests from the command line. For example, I could run the smoke tests first using grep plugin, and if the smoke tests pass, then run all the tests. See the video [How I organize pull request workflows by running smoke tests first](https://www.youtube.com/watch?v=SFW7Ecj5TNE) and its [pull request workflow file](https://github.com/bahmutov/cypress-grep-example/blob/main/.github/workflows/pr.yml).
@@ -753,7 +753,7 @@ info This module exists because it's specified in "devDependencies".
753
753
  Second, make sure you are passing the values to the plugin correctly by inspecting the "Settings" tab in the Cypress Desktop GUI screen. You should see the values you have passed in the "Config" object under the `env` property. For example, if I start the Test Runner with
754
754
 
755
755
  ```text
756
- $ npx cypress open --env grep=works,grepFilterTests=true
756
+ $ npx cypress open --expose grep=works,grepFilterTests=true
757
757
  ```
758
758
 
759
759
  Then I expect to see the grep string and the "filter tests" flag in the `env` object.
@@ -769,7 +769,7 @@ This module uses [debug](https://github.com/visionmedia/debug#readme) to log ver
769
769
  Start Cypress with the environment variable `DEBUG=cy-grep`. You will see a few messages from this plugin in the terminal output:
770
770
 
771
771
  ```
772
- $ DEBUG=cy-grep npx cypress run --env grep=works,grepFilterSpecs=true
772
+ $ DEBUG=cy-grep npx cypress run --expose grep=works,grepFilterSpecs=true
773
773
  cy-grep: tests with "works" in their names
774
774
  cy-grep: filtering specs using "works" in the title
775
775
  cy-grep Cypress config env object: { grep: 'works', grepFilterSpecs: true }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bahmutov/cy-grep",
3
- "version": "2.1.0",
3
+ "version": "3.0.0",
4
4
  "description": "Filter Cypress tests using title or tags",
5
5
  "main": "src/support.js",
6
6
  "scripts": {
@@ -13,20 +13,20 @@
13
13
  "stop-only": "stop-only --folder cypress/e2e"
14
14
  },
15
15
  "dependencies": {
16
- "cypress-plugin-config": "^1.2.0",
16
+ "cypress-plugin-config": "^2.0.0",
17
17
  "debug": "^4.3.2",
18
18
  "find-cypress-specs": "^1.35.1",
19
19
  "find-test-names": "1.29.19",
20
20
  "globby": "^11.1.0"
21
21
  },
22
22
  "devDependencies": {
23
- "cypress": "15.4.0",
23
+ "cypress": "15.11.0",
24
24
  "cypress-each": "^1.11.0",
25
25
  "cypress-expect": "^3.1.0",
26
- "prettier": "^3.0.0",
27
- "semantic-release": "^24.2.9",
26
+ "prettier": "^3.8.1",
27
+ "semantic-release": "^25.0.3",
28
28
  "stop-only": "^3.3.1",
29
- "typescript": "^5.0.0"
29
+ "typescript": "^5.9.3"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "cypress": ">=8"
package/src/plugin.js CHANGED
@@ -12,23 +12,27 @@ const minimatch = require('minimatch')
12
12
 
13
13
  const MINIMATCH_OPTIONS = { dot: true, matchBase: true }
14
14
 
15
- const isCypressV9 = (config) => !('specPattern' in config)
16
-
17
15
  function getGrepSettings(config) {
18
- const { env } = config
16
+ const { env, expose } = config
19
17
 
20
18
  debug('cy-grep plugin version %s', version)
21
- debug('Cypress config env object: %o', env)
19
+ debug('Cypress config env object: %o', expose)
22
20
 
23
- const grep = env.grep ? String(env.grep) : undefined
21
+ const grepStringMaybe = env.grep || expose.grep
22
+ const grep = grepStringMaybe ? String(grepStringMaybe) : undefined
24
23
 
25
24
  if (grep) {
26
25
  console.log('cy-grep: tests with "%s" in their names', grep.trim())
27
26
  }
28
27
 
29
- const grepPrefixAt = env.grepPrefixAt || env['grep-prefix-at']
28
+ const grepPrefixAt =
29
+ env.grepPrefixAt ||
30
+ env['grep-prefix-at'] ||
31
+ expose.grepPrefixAt ||
32
+ expose['grep-prefix-at']
30
33
 
31
- const grepTags = env.grepTags || env['grep-tags']
34
+ const grepTags =
35
+ env.grepTags || env['grep-tags'] || expose.grepTags || expose['grep-tags']
32
36
 
33
37
  if (grepTags) {
34
38
  console.log('cy-grep: filtering using tag(s) "%s"', grepTags)
@@ -37,25 +41,40 @@ function getGrepSettings(config) {
37
41
  debug('parsed grep tags %o', parsedGrep.tags)
38
42
  }
39
43
 
40
- const grepBurn = env.grepBurn || env['grep-burn'] || env.burn
44
+ const grepBurn =
45
+ env.grepBurn ||
46
+ env['grep-burn'] ||
47
+ env.burn ||
48
+ expose.grepBurn ||
49
+ expose['grep-burn'] ||
50
+ expose.burn
41
51
 
42
52
  if (grepBurn) {
43
53
  console.log('cy-grep: running filtered tests %d times', grepBurn)
44
54
  }
45
55
 
46
- const grepUntagged = env.grepUntagged || env['grep-untagged']
56
+ const grepUntagged =
57
+ env.grepUntagged ||
58
+ env['grep-untagged'] ||
59
+ expose.grepUntagged ||
60
+ expose['grep-untagged']
47
61
 
48
62
  if (grepUntagged) {
49
63
  console.log('cy-grep: running untagged tests')
50
64
  }
51
65
 
52
- const omitFiltered = env.grepOmitFiltered || env['grep-omit-filtered']
66
+ const omitFiltered =
67
+ env.grepOmitFiltered ||
68
+ env['grep-omit-filtered'] ||
69
+ expose.grepOmitFiltered ||
70
+ expose['grep-omit-filtered']
53
71
 
54
72
  if (omitFiltered) {
55
73
  console.log('cy-grep: will omit filtered tests')
56
74
  }
57
75
 
58
- const grepFilterSpecs = env.grepFilterSpecs === true
76
+ const grepFilterSpecs =
77
+ env.grepFilterSpecs === true || expose.grepFilterSpecs === true
59
78
 
60
79
  if (grepPrefixAt) {
61
80
  console.log('cy-grep: all tags will be forced to start with @')
@@ -80,7 +99,7 @@ function cypressGrepPlugin(config) {
80
99
  )
81
100
  }
82
101
 
83
- if (!config || !config.env) {
102
+ if (!config || !config.expose) {
84
103
  return config
85
104
  }
86
105
 
@@ -92,7 +111,12 @@ function cypressGrepPlugin(config) {
92
111
 
93
112
  debug('found %d spec file(s)', specFiles.length)
94
113
  debug('%o', specFiles)
95
- const specPattern = config.env.grepSpec || config.env.grepSpecs
114
+ // grab spec parameter from "env" or "expose"
115
+ const specPattern =
116
+ config.env?.grepSpec ||
117
+ config.env?.grepSpecs ||
118
+ config.expose?.grepSpec ||
119
+ config.expose?.grepSpecs
96
120
  if (specPattern) {
97
121
  debug('custom spec pattern: %s', specPattern)
98
122
  // https://github.com/bahmutov/cy-grep/issues/33
@@ -164,7 +188,7 @@ function cypressGrepPlugin(config) {
164
188
  tags.requiredTags.forEach((tag) => {
165
189
  foundTags.add(tag)
166
190
  })
167
- });
191
+ })
168
192
 
169
193
  return Object.keys(testTags).some((testTitle) => {
170
194
  const effectiveTags = testTags[testTitle].effectiveTags
@@ -228,7 +252,9 @@ function cypressGrepPlugin(config) {
228
252
  })
229
253
  }
230
254
 
231
- const extraSpecsPattern = config.env.grepExtraSpecs
255
+ // grab the extra specs from either "env" or "expose" objects
256
+ const extraSpecsPattern =
257
+ config.env?.grepExtraSpecs || config.expose?.grepExtraSpecs
232
258
  if (extraSpecsPattern) {
233
259
  debug('processing the extra specs pattern "%s"', extraSpecsPattern)
234
260
  const extraSpecs = resolveFilePatterns(extraSpecsPattern)
@@ -242,30 +268,13 @@ function cypressGrepPlugin(config) {
242
268
  }
243
269
  })
244
270
 
245
- config.env.grepExtraSpecs = resolvedExtraSpecs
271
+ config.expose.grepExtraSpecs = resolvedExtraSpecs
246
272
  }
247
273
 
248
274
  if (greppedSpecs.length) {
249
- if (isCypressV9(config)) {
250
- debug('setting selected %d specs (< v10)', greppedSpecs.length)
251
- // @ts-ignore
252
- const integrationFolder = config.integrationFolder
253
- const relativeNames = greppedSpecs.map((filename) =>
254
- path.relative(integrationFolder, filename),
255
- )
256
- const relativeSpecs = relativeNames.join(', ')
257
- debug(
258
- 'specs in the integration folder %s %s',
259
- integrationFolder,
260
- relativeSpecs,
261
- )
262
- // @ts-ignore
263
- config.testFiles = relativeNames
264
- } else {
265
- debug('setting selected %d specs (>= v10)', greppedSpecs.length)
266
- // @ts-ignore
267
- config.specPattern = greppedSpecs
268
- }
275
+ debug('setting selected %d specs (>= v10)', greppedSpecs.length)
276
+ // @ts-ignore
277
+ config.specPattern = greppedSpecs
269
278
  } else {
270
279
  // hmm, we filtered out all specs, probably something is wrong
271
280
  console.warn('cy-grep: grep and/or grepTags has eliminated all specs')
package/src/support.js CHANGED
@@ -31,9 +31,9 @@ beforeEach(() => {
31
31
  const info = testTree[testTitle]
32
32
  if (info) {
33
33
  const allTags = info.effectiveTestTags.concat(info.requiredTestTags)
34
- Cypress.env('testTags', allTags)
34
+ Cypress.expose('testTags', allTags)
35
35
  } else {
36
- Cypress.env('testTags', null)
36
+ Cypress.expose('testTags', null)
37
37
  }
38
38
  })
39
39
 
@@ -158,7 +158,7 @@ function registerCyGrep() {
158
158
  // Store the tags by individual name of test
159
159
  // Expose the object within the Cypress environment variables
160
160
  modifiedTestTree[nameOfTest] = { effectiveTestTags, requiredTestTags }
161
- Cypress.env('specTags', modifiedTestTree)
161
+ Cypress.expose('specTags', modifiedTestTree)
162
162
 
163
163
  const shouldRun = shouldTestRun(
164
164
  parsedGrep,