eslint-plugin-cypress 5.0.0 → 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 (69) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/lib/flat.js +8 -8
  3. package/lib/rules/assertion-before-screenshot.js +21 -21
  4. package/lib/rules/no-assigning-return-values.js +4 -4
  5. package/lib/rules/no-async-before.js +10 -10
  6. package/lib/rules/no-async-tests.js +10 -10
  7. package/lib/rules/no-chained-get.js +32 -32
  8. package/lib/rules/no-debug.js +18 -19
  9. package/lib/rules/no-force.js +21 -24
  10. package/lib/rules/no-pause.js +18 -19
  11. package/lib/rules/no-unnecessary-waiting.js +13 -13
  12. package/lib/rules/no-xpath.js +10 -10
  13. package/lib/rules/require-data-selectors.js +14 -14
  14. package/lib/rules/unsafe-to-chain-command.js +13 -13
  15. package/package.json +10 -6
  16. package/.github/workflows/add-issue-triage-board.yml +0 -12
  17. package/.github/workflows/triage_closed_issue_comment.yml +0 -9
  18. package/.husky/pre-commit +0 -1
  19. package/.node-version +0 -1
  20. package/.nvmrc +0 -1
  21. package/ESLINTRC-CONFIG.md +0 -7
  22. package/FLAT-CONFIG.md +0 -3
  23. package/circle.yml +0 -137
  24. package/eslint.config.mjs +0 -26
  25. package/jest.config.js +0 -6
  26. package/test-project/README.md +0 -48
  27. package/test-project/cypress/e2e/1-getting-started/todo.cy.js +0 -143
  28. package/test-project/cypress/e2e/2-advanced-examples/actions.cy.js +0 -321
  29. package/test-project/cypress/e2e/2-advanced-examples/aliasing.cy.js +0 -39
  30. package/test-project/cypress/e2e/2-advanced-examples/assertions.cy.js +0 -176
  31. package/test-project/cypress/e2e/2-advanced-examples/connectors.cy.js +0 -98
  32. package/test-project/cypress/e2e/2-advanced-examples/cookies.cy.js +0 -118
  33. package/test-project/cypress/e2e/2-advanced-examples/cypress_api.cy.js +0 -185
  34. package/test-project/cypress/e2e/2-advanced-examples/files.cy.js +0 -85
  35. package/test-project/cypress/e2e/2-advanced-examples/location.cy.js +0 -32
  36. package/test-project/cypress/e2e/2-advanced-examples/misc.cy.js +0 -90
  37. package/test-project/cypress/e2e/2-advanced-examples/navigation.cy.js +0 -55
  38. package/test-project/cypress/e2e/2-advanced-examples/network_requests.cy.js +0 -163
  39. package/test-project/cypress/e2e/2-advanced-examples/querying.cy.js +0 -114
  40. package/test-project/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js +0 -204
  41. package/test-project/cypress/e2e/2-advanced-examples/storage.cy.js +0 -117
  42. package/test-project/cypress/e2e/2-advanced-examples/traversal.cy.js +0 -121
  43. package/test-project/cypress/e2e/2-advanced-examples/utilities.cy.js +0 -107
  44. package/test-project/cypress/e2e/2-advanced-examples/viewport.cy.js +0 -58
  45. package/test-project/cypress/e2e/2-advanced-examples/waiting.cy.js +0 -30
  46. package/test-project/cypress/e2e/2-advanced-examples/window.cy.js +0 -22
  47. package/test-project/cypress/fixtures/example.json +0 -5
  48. package/test-project/cypress/support/commands.js +0 -25
  49. package/test-project/cypress/support/e2e.js +0 -17
  50. package/test-project/cypress.config.js +0 -9
  51. package/test-project/eslint-configs/eslint.default-deprecated.mjs +0 -11
  52. package/test-project/eslint-configs/eslint.default.mjs +0 -9
  53. package/test-project/eslint-configs/eslint.globals.mjs +0 -4
  54. package/test-project/eslint-configs/eslint.recommended.mjs +0 -9
  55. package/test-project/eslint.config.mjs +0 -9
  56. package/test-project/package.json +0 -9
  57. package/tests/config.js +0 -26
  58. package/tests/lib/rules/assertion-before-screenshot.js +0 -34
  59. package/tests/lib/rules/no-assigning-return-values.js +0 -37
  60. package/tests/lib/rules/no-async-before.js +0 -23
  61. package/tests/lib/rules/no-async-tests.js +0 -23
  62. package/tests/lib/rules/no-chained-get.js +0 -31
  63. package/tests/lib/rules/no-debug.js +0 -23
  64. package/tests/lib/rules/no-force.js +0 -39
  65. package/tests/lib/rules/no-pause.js +0 -23
  66. package/tests/lib/rules/no-unnecessary-waiting.js +0 -47
  67. package/tests/lib/rules/no-xpath.js +0 -30
  68. package/tests/lib/rules/require-data-selectors.js +0 -30
  69. package/tests/lib/rules/unsafe-to-chain-command.js +0 -34
@@ -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
- })