eslint-plugin-cypress 5.0.1 → 5.1.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.
Files changed (55) hide show
  1. package/package.json +6 -1
  2. package/.github/workflows/add-issue-triage-board.yml +0 -12
  3. package/.github/workflows/triage_closed_issue_comment.yml +0 -9
  4. package/.husky/pre-commit +0 -1
  5. package/.node-version +0 -1
  6. package/.nvmrc +0 -1
  7. package/ESLINTRC-CONFIG.md +0 -7
  8. package/FLAT-CONFIG.md +0 -3
  9. package/circle.yml +0 -137
  10. package/eslint.config.mjs +0 -33
  11. package/test-project/README.md +0 -48
  12. package/test-project/cypress/e2e/1-getting-started/todo.cy.js +0 -143
  13. package/test-project/cypress/e2e/2-advanced-examples/actions.cy.js +0 -321
  14. package/test-project/cypress/e2e/2-advanced-examples/aliasing.cy.js +0 -39
  15. package/test-project/cypress/e2e/2-advanced-examples/assertions.cy.js +0 -176
  16. package/test-project/cypress/e2e/2-advanced-examples/connectors.cy.js +0 -98
  17. package/test-project/cypress/e2e/2-advanced-examples/cookies.cy.js +0 -118
  18. package/test-project/cypress/e2e/2-advanced-examples/cypress_api.cy.js +0 -185
  19. package/test-project/cypress/e2e/2-advanced-examples/files.cy.js +0 -85
  20. package/test-project/cypress/e2e/2-advanced-examples/location.cy.js +0 -32
  21. package/test-project/cypress/e2e/2-advanced-examples/misc.cy.js +0 -90
  22. package/test-project/cypress/e2e/2-advanced-examples/navigation.cy.js +0 -55
  23. package/test-project/cypress/e2e/2-advanced-examples/network_requests.cy.js +0 -163
  24. package/test-project/cypress/e2e/2-advanced-examples/querying.cy.js +0 -114
  25. package/test-project/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js +0 -204
  26. package/test-project/cypress/e2e/2-advanced-examples/storage.cy.js +0 -117
  27. package/test-project/cypress/e2e/2-advanced-examples/traversal.cy.js +0 -121
  28. package/test-project/cypress/e2e/2-advanced-examples/utilities.cy.js +0 -107
  29. package/test-project/cypress/e2e/2-advanced-examples/viewport.cy.js +0 -58
  30. package/test-project/cypress/e2e/2-advanced-examples/waiting.cy.js +0 -30
  31. package/test-project/cypress/e2e/2-advanced-examples/window.cy.js +0 -22
  32. package/test-project/cypress/fixtures/example.json +0 -5
  33. package/test-project/cypress/support/commands.js +0 -25
  34. package/test-project/cypress/support/e2e.js +0 -17
  35. package/test-project/cypress.config.js +0 -9
  36. package/test-project/eslint-configs/eslint.default-deprecated.mjs +0 -11
  37. package/test-project/eslint-configs/eslint.default.mjs +0 -9
  38. package/test-project/eslint-configs/eslint.globals.mjs +0 -4
  39. package/test-project/eslint-configs/eslint.recommended.mjs +0 -9
  40. package/test-project/eslint.config.mjs +0 -9
  41. package/test-project/package.json +0 -9
  42. package/tests/config.js +0 -26
  43. package/tests/lib/rules/assertion-before-screenshot.js +0 -34
  44. package/tests/lib/rules/no-assigning-return-values.js +0 -37
  45. package/tests/lib/rules/no-async-before.js +0 -23
  46. package/tests/lib/rules/no-async-tests.js +0 -23
  47. package/tests/lib/rules/no-chained-get.js +0 -31
  48. package/tests/lib/rules/no-debug.js +0 -23
  49. package/tests/lib/rules/no-force.js +0 -39
  50. package/tests/lib/rules/no-pause.js +0 -23
  51. package/tests/lib/rules/no-unnecessary-waiting.js +0 -47
  52. package/tests/lib/rules/no-xpath.js +0 -30
  53. package/tests/lib/rules/require-data-selectors.js +0 -30
  54. package/tests/lib/rules/unsafe-to-chain-command.js +0 -34
  55. package/vitest.config.mts +0 -8
@@ -1,39 +0,0 @@
1
- 'use strict'
2
-
3
- const rule = require('../../../lib/rules/no-force')
4
- const RuleTester = require('eslint').RuleTester
5
-
6
- const ruleTester = new RuleTester()
7
-
8
- const errors = [{ messageId: 'unexpected' }]
9
-
10
- ruleTester.run('no-force', rule, {
11
-
12
- valid: [
13
- { code: 'cy.get(\'button\').click()' },
14
- { code: 'cy.get(\'button\').click({multiple: true})' },
15
- { code: 'cy.get(\'button\').dblclick()' },
16
- { code: 'cy.get(\'input\').type(\'somth\')' },
17
- { code: 'cy.get(\'input\').type(\'somth\', {anyoption: true})' },
18
- { code: 'cy.get(\'input\').trigger(\'click\', {anyoption: true})' },
19
- { code: 'cy.get(\'input\').rightclick({anyoption: true})' },
20
- { code: 'cy.get(\'input\').check()' },
21
- { code: 'cy.get(\'input\').select()' },
22
- { code: 'cy.get(\'input\').focus()' },
23
- { code: 'cy.document().trigger("keydown", { ...event })' },
24
- ],
25
-
26
- invalid: [
27
- { code: 'cy.get(\'button\').click({force: true})', errors },
28
- { code: 'cy.get(\'button\').dblclick({force: true})', errors },
29
- { code: 'cy.get(\'input\').type(\'somth\', {force: true})', errors },
30
- { code: 'cy.get(\'div\').find(\'.foo\').type(\'somth\', {force: true})', errors },
31
- { code: 'cy.get(\'div\').find(\'.foo\').find(\'.bar\').click({force: true})', errors },
32
- { code: 'cy.get(\'div\').find(\'.foo\').find(\'.bar\').trigger(\'change\', {force: true})', errors },
33
- { code: 'cy.get(\'input\').trigger(\'click\', {force: true})', errors },
34
- { code: 'cy.get(\'input\').rightclick({force: true})', errors },
35
- { code: 'cy.get(\'input\').check({force: true})', errors },
36
- { code: 'cy.get(\'input\').select({force: true})', errors },
37
- { code: 'cy.get(\'input\').focus({force: true})', errors },
38
- ],
39
- })
@@ -1,23 +0,0 @@
1
- 'use strict'
2
-
3
- const rule = require('../../../lib/rules/no-pause')
4
- const RuleTester = require('eslint').RuleTester
5
-
6
- const ruleTester = new RuleTester()
7
-
8
- const errors = [{ messageId: 'unexpected' }]
9
-
10
- ruleTester.run('no-pause', rule, {
11
-
12
- valid: [
13
- { code: 'pause()' },
14
- { code: 'cy.get(\'button\').dblclick()' },
15
- ],
16
-
17
- invalid: [
18
- { code: 'cy.pause()', errors },
19
- { code: 'cy.pause({ log: false })', errors },
20
- { code: 'cy.get(\'button\').pause()', errors },
21
- { code: 'cy.get(\'a\').should(\'have.attr\', \'href\').and(\'match\', /dashboard/).pause()', errors },
22
- ],
23
- })
@@ -1,47 +0,0 @@
1
- 'use strict'
2
-
3
- const rule = require('../../../lib/rules/no-unnecessary-waiting')
4
- const RuleTester = require('eslint').RuleTester
5
-
6
- const ruleTester = new RuleTester()
7
-
8
- const errors = [{ messageId: 'unexpected' }]
9
-
10
- ruleTester.run('no-unnecessary-waiting', rule, {
11
- valid: [
12
- { code: 'foo.wait(10)' },
13
-
14
- { code: 'cy.wait("@someRequest")' },
15
- { code: 'cy.wait("@someRequest", { log: false })' },
16
- { code: 'cy.wait("@someRequest").then((xhr) => xhr)' },
17
- { code: 'cy.wait(["@someRequest", "@anotherRequest"])' },
18
-
19
- { code: 'cy.clock(5000)' },
20
- { code: 'cy.scrollTo(0, 10)' },
21
- { code: 'cy.tick(500)' },
22
-
23
- { code: 'const someRequest="@someRequest"; cy.wait(someRequest)' },
24
- { code: 'function customWait (alias = "@someRequest") { cy.wait(alias) }' },
25
- { code: 'const customWait = (alias = "@someRequest") => { cy.wait(alias) }' },
26
- { code: 'function customWait (ms) { cy.wait(ms) }' },
27
- { code: 'const customWait = (ms) => { cy.wait(ms) }' },
28
-
29
- { code: 'import BAR_BAZ from "bar-baz"; cy.wait(BAR_BAZ)' },
30
- { code: 'import { FOO_BAR } from "foo-bar"; cy.wait(FOO_BAR)' },
31
- { code: 'import * as wildcard from "wildcard"; cy.wait(wildcard.value)' },
32
- { code: 'import { NAME as OTHER_NAME } from "rename"; cy.wait(OTHER_NAME)' },
33
- ],
34
-
35
- invalid: [
36
- { code: 'cy.wait(0)', errors },
37
- { code: 'cy.wait(100)', errors },
38
- { code: 'cy.wait(5000)', errors },
39
- { code: 'const someNumber=500; cy.wait(someNumber)', errors },
40
- { code: 'function customWait (ms = 1) { cy.wait(ms) }', errors },
41
- { code: 'const customWait = (ms = 1) => { cy.wait(ms) }', errors },
42
-
43
- { code: 'cy.get(".some-element").wait(10)', errors },
44
- { code: 'cy.get(".some-element").contains("foo").wait(10)', errors },
45
- { code: 'const customWait = (ms = 1) => { cy.get(".some-element").wait(ms) }', errors },
46
- ],
47
- })
@@ -1,30 +0,0 @@
1
- 'use strict'
2
-
3
- // ------------------------------------------------------------------------------
4
- // Requirements
5
- // ------------------------------------------------------------------------------
6
-
7
- const rule = require('../../../lib/rules/no-xpath'),
8
- RuleTester = require('eslint').RuleTester
9
-
10
- // ------------------------------------------------------------------------------
11
- // Tests
12
- // ------------------------------------------------------------------------------
13
-
14
- const ruleTester = new RuleTester()
15
- ruleTester.run('no-xpath', rule, {
16
- valid: [
17
- { code: 'cy.get("button").click({force: true})' },
18
- ],
19
-
20
- invalid: [
21
- {
22
- code: 'cy.xpath(\'//div[@class="container"]/p[1]\').click()',
23
- errors: [{ messageId: 'unexpected' }],
24
- },
25
- {
26
- code: 'cy.xpath(\'//p[1]\').should(\'exist\')',
27
- errors: [{ messageId: 'unexpected' }],
28
- },
29
- ],
30
- })
@@ -1,30 +0,0 @@
1
- 'use strict'
2
-
3
- const rule = require('../../../lib/rules/require-data-selectors')
4
- const RuleTester = require('eslint').RuleTester
5
-
6
- const ruleTester = new RuleTester()
7
-
8
- const errors = [{ messageId: 'unexpected' }]
9
-
10
- ruleTester.run('require-data-selectors', rule, {
11
- valid: [
12
- { code: 'cy.get(\'[data-cy=submit]\').click()' },
13
- { code: 'cy.get(\'[data-QA=submit]\')' },
14
- { code: 'cy.clock(5000)' },
15
- { code: 'cy.scrollTo(0, 10)' },
16
- { code: 'cy.tick(500)' },
17
- { code: 'cy.get(\`[data-cy=${1}]\`)' }, // eslint-disable-line no-useless-escape
18
- { code: 'cy.get("@my-alias")' },
19
- { code: 'cy.get(`@my-alias`)' },
20
- ],
21
-
22
- invalid: [
23
- { code: 'cy.get(\'[daedta-cy=submit]\').click()', errors },
24
- { code: 'cy.get(\'[d-cy=submit]\')', errors },
25
- { code: 'cy.get(".btn-large").click()', errors },
26
- { code: 'cy.get(".btn-.large").click()', errors },
27
- { code: 'cy.get(".a")', errors },
28
- { code: 'cy.get(\`[daedta-cy=${1}]\`)', errors }, // eslint-disable-line no-useless-escape
29
- ],
30
- })
@@ -1,34 +0,0 @@
1
- 'use strict'
2
-
3
- const rule = require('../../../lib/rules/unsafe-to-chain-command')
4
- const RuleTester = require('eslint').RuleTester
5
-
6
- const ruleTester = new RuleTester()
7
-
8
- const errors = [{ messageId: 'unexpected' }]
9
-
10
- ruleTester.run('action-ends-chain', rule, {
11
- valid: [
12
- {
13
- code: 'cy.get("new-todo").type("todo A{enter}"); cy.get("new-todo").type("todo B{enter}"); cy.get("new-todo").should("have.class", "active");',
14
- },
15
- { code: 'cy.focused().should("be.visible");' },
16
- { code: 'cy.submitBtn().click();' },
17
- ],
18
-
19
- invalid: [
20
- { code: 'cy.get("new-todo").type("todo A{enter}").should("have.class", "active");', errors },
21
- { code: 'cy.get("new-todo").type("todo A{enter}").type("todo B{enter}");', errors },
22
- { code: 'cy.get("new-todo").focus().should("have.class", "active");', errors },
23
- {
24
- code: 'cy.get("new-todo").customType("todo A{enter}").customClick();',
25
- options: [{ methods: ['customType', 'customClick'] }],
26
- errors,
27
- },
28
- {
29
- code: 'cy.get("new-todo").customPress("Enter").customScroll();',
30
- options: [{ methods: ['customPress', 'customScroll'] }],
31
- errors,
32
- },
33
- ],
34
- })
package/vitest.config.mts DELETED
@@ -1,8 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
-
3
- export default defineConfig({
4
- test: {
5
- include: ['**/tests/**/*.[jt]s?(x)'],
6
- globals: true
7
- },
8
- })