q9
This commit is contained in:
26
node_modules/eslint-plugin-cypress/tests/config.js
generated
vendored
Normal file
26
node_modules/eslint-plugin-cypress/tests/config.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/* global describe, it, expect */
|
||||
'use strict'
|
||||
|
||||
const globals = require('globals')
|
||||
const config = require('../lib/flat.js')
|
||||
|
||||
describe('globals languageOptions', () => {
|
||||
const languageOptions = config.configs.globals.languageOptions
|
||||
|
||||
it('should not mutate globals', () => {
|
||||
expect(globals.browser).not.toHaveProperty('cy')
|
||||
expect(globals.mocha).not.toHaveProperty('cy')
|
||||
})
|
||||
|
||||
it('should include other globals', () => {
|
||||
expect(languageOptions.globals).toEqual(expect.objectContaining(globals.browser))
|
||||
expect(languageOptions.globals).toEqual(expect.objectContaining(globals.mocha))
|
||||
})
|
||||
|
||||
it('should include cypress globals', () => {
|
||||
expect(languageOptions.globals).toEqual(expect.objectContaining({
|
||||
cy: false,
|
||||
Cypress: false,
|
||||
}))
|
||||
})
|
||||
})
|
||||
34
node_modules/eslint-plugin-cypress/tests/lib/rules/assertion-before-screenshot.js
generated
vendored
Normal file
34
node_modules/eslint-plugin-cypress/tests/lib/rules/assertion-before-screenshot.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/assertion-before-screenshot')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('assertion-before-screenshot', rule, {
|
||||
valid: [
|
||||
{ code: 'cy.get(".some-element"); cy.screenshot();' },
|
||||
{ code: 'cy.get(".some-element").should("exist").screenshot();' },
|
||||
{ code: 'cy.get(".some-element").should("exist").screenshot().click()' },
|
||||
{ code: 'cy.get(".some-element").should("exist"); if(true) cy.screenshot();' },
|
||||
{ code: 'if(true) { cy.get(".some-element").should("exist"); cy.screenshot(); }' },
|
||||
{ code: 'cy.get(".some-element").should("exist"); if(true) { cy.screenshot(); }' },
|
||||
{ code: 'const a = () => { cy.get(".some-element").should("exist"); cy.screenshot(); }' },
|
||||
{ code: 'cy.get(".some-element").should("exist").and("be.visible"); cy.screenshot();' },
|
||||
{ code: 'cy.get(".some-element").contains("Text"); cy.screenshot();' },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: 'cy.screenshot()', errors },
|
||||
{ code: 'cy.visit("somepage"); cy.screenshot();', errors },
|
||||
{ code: 'cy.custom(); cy.screenshot()', errors },
|
||||
{ code: 'cy.get(".some-element").click(); cy.screenshot()', errors },
|
||||
{ code: 'cy.get(".some-element").click().screenshot()', errors },
|
||||
{ code: 'if(true) { cy.get(".some-element").click(); cy.screenshot(); }', errors },
|
||||
{ code: 'cy.get(".some-element").click(); if(true) { cy.screenshot(); }', errors },
|
||||
{ code: 'cy.get(".some-element"); function a() { cy.screenshot(); }', errors },
|
||||
{ code: 'cy.get(".some-element"); const a = () => { cy.screenshot(); }', errors },
|
||||
],
|
||||
})
|
||||
37
node_modules/eslint-plugin-cypress/tests/lib/rules/no-assigning-return-values.js
generated
vendored
Normal file
37
node_modules/eslint-plugin-cypress/tests/lib/rules/no-assigning-return-values.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-assigning-return-values')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-assigning-return-values', rule, {
|
||||
valid: [
|
||||
{ code: 'var foo = true;' },
|
||||
{ code: 'let foo = true;' },
|
||||
{ code: 'const foo = true;' },
|
||||
{ code: 'const foo = bar();' },
|
||||
{ code: 'const foo = bar().baz();' },
|
||||
{ code: 'const spy = cy.spy();' },
|
||||
{ code: 'const spy = cy.spy().as();' },
|
||||
{ code: 'const stub = cy.stub();' },
|
||||
{ code: 'const result = cy.now();' },
|
||||
{ code: 'const state = cy.state();' },
|
||||
{ code: 'cy.get("foo");' },
|
||||
{ code: 'cy.contains("foo").click();' },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: 'let a = cy.get("foo")', errors },
|
||||
{ code: 'const a = cy.get("foo")', errors },
|
||||
{ code: 'var a = cy.get("foo")', errors },
|
||||
|
||||
{ code: 'let a = cy.contains("foo")', errors },
|
||||
{ code: 'let a = cy.window()', errors },
|
||||
{ code: 'let a = cy.wait("@something")', errors },
|
||||
|
||||
{ code: 'let a = cy.contains("foo").click()', errors },
|
||||
],
|
||||
})
|
||||
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-async-before.js
generated
vendored
Normal file
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-async-before.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-async-before')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-async-before', rule, {
|
||||
valid: [
|
||||
{ code: 'before(\'a before case\', () => { cy.get(\'.someClass\'); })' },
|
||||
{ code: 'before(\'a before case\', async () => { await somethingAsync(); })' },
|
||||
{ code: 'async function nonTestFn () { return await somethingAsync(); }' },
|
||||
{ code: 'const nonTestArrowFn = async () => { await somethingAsync(); }' },
|
||||
],
|
||||
invalid: [
|
||||
{ code: 'before(\'a test case\', async () => { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'beforeEach(\'a test case\', async () => { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'before(\'a test case\', async function () { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'beforeEach(\'a test case\', async function () { cy.get(\'.someClass\'); })', errors },
|
||||
],
|
||||
})
|
||||
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-async-tests.js
generated
vendored
Normal file
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-async-tests.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-async-tests')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-async-tests', rule, {
|
||||
valid: [
|
||||
{ code: 'it(\'a test case\', () => { cy.get(\'.someClass\'); })' },
|
||||
{ code: 'it(\'a test case\', async () => { await somethingAsync(); })' },
|
||||
{ code: 'async function nonTestFn () { return await somethingAsync(); }' },
|
||||
{ code: 'const nonTestArrowFn = async () => { await somethingAsync(); }' },
|
||||
],
|
||||
invalid: [
|
||||
{ code: 'it(\'a test case\', async () => { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'test(\'a test case\', async () => { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'it(\'a test case\', async function () { cy.get(\'.someClass\'); })', errors },
|
||||
{ code: 'test(\'a test case\', async function () { cy.get(\'.someClass\'); })', errors },
|
||||
],
|
||||
})
|
||||
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-debug.js
generated
vendored
Normal file
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-debug.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-debug')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-debug', rule, {
|
||||
|
||||
valid: [
|
||||
{ code: `debug()` },
|
||||
{ code: `cy.get('button').dblclick()` },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: `cy.debug()`, errors },
|
||||
{ code: `cy.debug({ log: false })`, errors },
|
||||
{ code: `cy.get('button').debug()`, errors },
|
||||
{ code: `cy.get('a').should('have.attr', 'href').and('match', /dashboard/).debug()`, errors }
|
||||
],
|
||||
})
|
||||
39
node_modules/eslint-plugin-cypress/tests/lib/rules/no-force.js
generated
vendored
Normal file
39
node_modules/eslint-plugin-cypress/tests/lib/rules/no-force.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-force')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-force', rule, {
|
||||
|
||||
valid: [
|
||||
{ code: `cy.get('button').click()` },
|
||||
{ code: `cy.get('button').click({multiple: true})` },
|
||||
{ code: `cy.get('button').dblclick()` },
|
||||
{ code: `cy.get('input').type('somth')` },
|
||||
{ code: `cy.get('input').type('somth', {anyoption: true})` },
|
||||
{ code: `cy.get('input').trigger('click', {anyoption: true})` },
|
||||
{ code: `cy.get('input').rightclick({anyoption: true})` },
|
||||
{ code: `cy.get('input').check()` },
|
||||
{ code: `cy.get('input').select()` },
|
||||
{ code: `cy.get('input').focus()` },
|
||||
{ code: `cy.document().trigger("keydown", { ...event })` },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: `cy.get('button').click({force: true})`, errors },
|
||||
{ code: `cy.get('button').dblclick({force: true})`, errors },
|
||||
{ code: `cy.get('input').type('somth', {force: true})`, errors },
|
||||
{ code: `cy.get('div').find('.foo').type('somth', {force: true})`, errors },
|
||||
{ code: `cy.get('div').find('.foo').find('.bar').click({force: true})`, errors },
|
||||
{ code: `cy.get('div').find('.foo').find('.bar').trigger('change', {force: true})`, errors },
|
||||
{ code: `cy.get('input').trigger('click', {force: true})`, errors },
|
||||
{ code: `cy.get('input').rightclick({force: true})`, errors },
|
||||
{ code: `cy.get('input').check({force: true})`, errors },
|
||||
{ code: `cy.get('input').select({force: true})`, errors },
|
||||
{ code: `cy.get('input').focus({force: true})`, errors },
|
||||
],
|
||||
})
|
||||
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-pause.js
generated
vendored
Normal file
23
node_modules/eslint-plugin-cypress/tests/lib/rules/no-pause.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-pause')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-pause', rule, {
|
||||
|
||||
valid: [
|
||||
{ code: `pause()` },
|
||||
{ code: `cy.get('button').dblclick()` },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: `cy.pause()`, errors },
|
||||
{ code: `cy.pause({ log: false })`, errors },
|
||||
{ code: `cy.get('button').pause()`, errors },
|
||||
{ code: `cy.get('a').should('have.attr', 'href').and('match', /dashboard/).pause()`, errors }
|
||||
],
|
||||
})
|
||||
47
node_modules/eslint-plugin-cypress/tests/lib/rules/no-unnecessary-waiting.js
generated
vendored
Normal file
47
node_modules/eslint-plugin-cypress/tests/lib/rules/no-unnecessary-waiting.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/no-unnecessary-waiting')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('no-unnecessary-waiting', rule, {
|
||||
valid: [
|
||||
{ code: 'foo.wait(10)' },
|
||||
|
||||
{ code: 'cy.wait("@someRequest")' },
|
||||
{ code: 'cy.wait("@someRequest", { log: false })' },
|
||||
{ code: 'cy.wait("@someRequest").then((xhr) => xhr)' },
|
||||
{ code: 'cy.wait(["@someRequest", "@anotherRequest"])' },
|
||||
|
||||
{ code: 'cy.clock(5000)' },
|
||||
{ code: 'cy.scrollTo(0, 10)' },
|
||||
{ code: 'cy.tick(500)' },
|
||||
|
||||
{ code: 'const someRequest="@someRequest"; cy.wait(someRequest)' },
|
||||
{ code: 'function customWait (alias = "@someRequest") { cy.wait(alias) }' },
|
||||
{ code: 'const customWait = (alias = "@someRequest") => { cy.wait(alias) }' },
|
||||
{ code: 'function customWait (ms) { cy.wait(ms) }' },
|
||||
{ code: 'const customWait = (ms) => { cy.wait(ms) }' },
|
||||
|
||||
{ code: 'import BAR_BAZ from "bar-baz"; cy.wait(BAR_BAZ)' },
|
||||
{ code: 'import { FOO_BAR } from "foo-bar"; cy.wait(FOO_BAR)' },
|
||||
{ code: 'import * as wildcard from "wildcard"; cy.wait(wildcard.value)' },
|
||||
{ code: 'import { NAME as OTHER_NAME } from "rename"; cy.wait(OTHER_NAME)' },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: 'cy.wait(0)', errors },
|
||||
{ code: 'cy.wait(100)', errors },
|
||||
{ code: 'cy.wait(5000)', errors },
|
||||
{ code: 'const someNumber=500; cy.wait(someNumber)', errors },
|
||||
{ code: 'function customWait (ms = 1) { cy.wait(ms) }', errors },
|
||||
{ code: 'const customWait = (ms = 1) => { cy.wait(ms) }', errors },
|
||||
|
||||
{ code: 'cy.get(".some-element").wait(10)', errors },
|
||||
{ code: 'cy.get(".some-element").contains("foo").wait(10)', errors },
|
||||
{ code: 'const customWait = (ms = 1) => { cy.get(".some-element").wait(ms) }', errors },
|
||||
],
|
||||
})
|
||||
30
node_modules/eslint-plugin-cypress/tests/lib/rules/require-data-selectors.js
generated
vendored
Normal file
30
node_modules/eslint-plugin-cypress/tests/lib/rules/require-data-selectors.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/require-data-selectors')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('require-data-selectors', rule, {
|
||||
valid: [
|
||||
{ code: 'cy.get(\'[data-cy=submit]\').click()' },
|
||||
{ code: 'cy.get(\'[data-QA=submit]\')' },
|
||||
{ code: 'cy.clock(5000)' },
|
||||
{ code: 'cy.scrollTo(0, 10)' },
|
||||
{ code: 'cy.tick(500)' },
|
||||
{ code: 'cy.get(\`[data-cy=${1}]\`)' }, // eslint-disable-line no-useless-escape
|
||||
{ code: 'cy.get("@my-alias")' },
|
||||
{ code: 'cy.get(`@my-alias`)' },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: 'cy.get(\'[daedta-cy=submit]\').click()', errors },
|
||||
{ code: 'cy.get(\'[d-cy=submit]\')', errors },
|
||||
{ code: 'cy.get(".btn-large").click()', errors },
|
||||
{ code: 'cy.get(".btn-.large").click()', errors },
|
||||
{ code: 'cy.get(".a")', errors },
|
||||
{ code: 'cy.get(\`[daedta-cy=${1}]\`)', errors }, // eslint-disable-line no-useless-escape
|
||||
],
|
||||
})
|
||||
34
node_modules/eslint-plugin-cypress/tests/lib/rules/unsafe-to-chain-command.js
generated
vendored
Normal file
34
node_modules/eslint-plugin-cypress/tests/lib/rules/unsafe-to-chain-command.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict'
|
||||
|
||||
const rule = require('../../../lib/rules/unsafe-to-chain-command')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
|
||||
const errors = [{ messageId: 'unexpected' }]
|
||||
|
||||
ruleTester.run('action-ends-chain', rule, {
|
||||
valid: [
|
||||
{
|
||||
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");'
|
||||
},
|
||||
{ code: 'cy.focused().should("be.visible");' },
|
||||
{ code: 'cy.submitBtn().click();' },
|
||||
],
|
||||
|
||||
invalid: [
|
||||
{ code: 'cy.get("new-todo").type("todo A{enter}").should("have.class", "active");', errors },
|
||||
{ code: 'cy.get("new-todo").type("todo A{enter}").type("todo B{enter}");', errors },
|
||||
{ code: 'cy.get("new-todo").focus().should("have.class", "active");', errors },
|
||||
{
|
||||
code: 'cy.get("new-todo").customType("todo A{enter}").customClick();',
|
||||
options: [{ methods: ['customType', 'customClick'] }],
|
||||
errors,
|
||||
},
|
||||
{
|
||||
code: 'cy.get("new-todo").customPress("Enter").customScroll();',
|
||||
options: [{ methods: ['customPress', 'customScroll'] }],
|
||||
errors,
|
||||
},
|
||||
],
|
||||
})
|
||||
Reference in New Issue
Block a user