no-unnecessary-waiting.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict'
  2. const rule = require('../../../lib/rules/no-unnecessary-waiting')
  3. const RuleTester = require('eslint').RuleTester
  4. const ruleTester = new RuleTester()
  5. const errors = [{ messageId: 'unexpected' }]
  6. const parserOptions = { ecmaVersion: 6, sourceType: 'module' }
  7. ruleTester.run('no-unnecessary-waiting', rule, {
  8. valid: [
  9. { code: 'foo.wait(10)', parserOptions },
  10. { code: 'cy.wait("@someRequest")', parserOptions },
  11. { code: 'cy.wait("@someRequest", { log: false })', parserOptions },
  12. { code: 'cy.wait("@someRequest").then((xhr) => xhr)', parserOptions },
  13. { code: 'cy.wait(["@someRequest", "@anotherRequest"])', parserOptions },
  14. { code: 'cy.clock(5000)', parserOptions },
  15. { code: 'cy.scrollTo(0, 10)', parserOptions },
  16. { code: 'cy.tick(500)', parserOptions },
  17. { code: 'const someRequest="@someRequest"; cy.wait(someRequest)', parserOptions, errors },
  18. { code: 'function customWait (alias = "@someRequest") { cy.wait(alias) }', parserOptions, errors },
  19. { code: 'const customWait = (alias = "@someRequest") => { cy.wait(alias) }', parserOptions, errors },
  20. { code: 'function customWait (ms) { cy.wait(ms) }', parserOptions, errors },
  21. { code: 'const customWait = (ms) => { cy.wait(ms) }', parserOptions, errors },
  22. { code: 'import BAR_BAZ from "bar-baz"; cy.wait(BAR_BAZ)', parserOptions },
  23. { code: 'import { FOO_BAR } from "foo-bar"; cy.wait(FOO_BAR)', parserOptions },
  24. { code: 'import * as wildcard from "wildcard"; cy.wait(wildcard.value)', parserOptions },
  25. { code: 'import { NAME as OTHER_NAME } from "rename"; cy.wait(OTHER_NAME)', parserOptions },
  26. // disable the eslint rule
  27. {
  28. code: `
  29. cy.wait(100); // eslint-disable-line no-unnecessary-waiting
  30. `,
  31. parserOptions,
  32. },
  33. {
  34. code: `
  35. /* eslint-disable-next-line no-unnecessary-waiting */
  36. cy.wait(100)
  37. `,
  38. parserOptions,
  39. },
  40. {
  41. code: `
  42. /* eslint-disable no-unnecessary-waiting */
  43. cy.wait(100)
  44. /* eslint-enable no-unnecessary-waiting */
  45. `,
  46. parserOptions,
  47. },
  48. ],
  49. invalid: [
  50. { code: 'cy.wait(0)', parserOptions, errors },
  51. { code: 'cy.wait(100)', parserOptions, errors },
  52. { code: 'cy.wait(5000)', parserOptions, errors },
  53. { code: 'const someNumber=500; cy.wait(someNumber)', parserOptions, errors },
  54. { code: 'function customWait (ms = 1) { cy.wait(ms) }', parserOptions, errors },
  55. { code: 'const customWait = (ms = 1) => { cy.wait(ms) }', parserOptions, errors },
  56. { code: 'cy.get(".some-element").wait(10)', parserOptions, errors },
  57. { code: 'cy.get(".some-element").contains("foo").wait(10)', parserOptions, errors },
  58. { code: 'const customWait = (ms = 1) => { cy.get(".some-element").wait(ms) }', parserOptions, errors },
  59. ],
  60. })