codecept.conf.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. // turn on headless mode when running with HEADLESS=true environment variable
  2. // HEADLESS=true npx codecept run
  3. const headless = process.env.HEADLESS;
  4. const port = process.env.LSF_PORT ?? 3000;
  5. const enableCoverage = process.env.COVERAGE === "true";
  6. const fs = require("fs");
  7. const FRAGMENTS_PATH = "./fragments/";
  8. module.exports.config = {
  9. timeout: 60 * 40, // Time out after 40 minutes
  10. tests: "./tests/**/*.test.js",
  11. output: "./output",
  12. helpers: {
  13. // Puppeteer: {
  14. // url: "http://localhost:3000",
  15. // show: !headless,
  16. // waitForAction: headless ? 100 : 1200,
  17. // windowSize: "1200x900",
  18. // },
  19. Playwright: {
  20. url: `http://localhost:${port}`,
  21. show: !headless,
  22. restart: "context",
  23. timeout: 30000,
  24. waitForAction: headless ? 0 : 500,
  25. windowSize: "1200x900",
  26. waitForNavigation: "domcontentloaded",
  27. waitForURL: "domcontentloaded",
  28. browser: "chromium",
  29. chromium: process.env.CHROMIUM_EXECUTABLE_PATH
  30. ? {
  31. executablePath: process.env.CHROMIUM_EXECUTABLE_PATH,
  32. args: ["--disable-dev-shm-usage", "--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu"],
  33. }
  34. : {},
  35. // to test date shifts because of timezone. (see date-time.test.js)
  36. // Paris is in +1/+2 timezone, so date with midnight (00:00)
  37. // will be always in previous day in ISO
  38. timezoneId: "Europe/Paris",
  39. trace: false,
  40. keepTraceForPassedTests: false,
  41. },
  42. PlaywrightAddon: {
  43. require: "./helpers/PlaywrightAddon.js",
  44. },
  45. MouseActions: {
  46. require: "./helpers/MouseActions.js",
  47. },
  48. Selection: {
  49. require: "./helpers/Selection.js",
  50. },
  51. Annotations: {
  52. require: "./helpers/Annotations.ts",
  53. },
  54. Assertion: {
  55. require: "./helpers/Assertion.js",
  56. },
  57. },
  58. include: {
  59. I: "./steps_file.js",
  60. ...Object.fromEntries(
  61. fs.readdirSync(FRAGMENTS_PATH).map((path) => {
  62. const name = path.split(".")[0];
  63. return [name, `${FRAGMENTS_PATH}${path}`];
  64. }),
  65. ),
  66. },
  67. bootstrap: null,
  68. mocha: {
  69. bail: true,
  70. reporterOptions: {
  71. mochaFile: "output/result.xml",
  72. },
  73. },
  74. name: "label-studio-frontend",
  75. plugins: {
  76. retryFailedStep: {
  77. enabled: true,
  78. minTimeout: 100,
  79. defaultIgnoredSteps: [
  80. //'amOnPage',
  81. //'wait*',
  82. "send*",
  83. "execute*",
  84. "run*",
  85. "have*",
  86. ],
  87. },
  88. // coverage: {
  89. // enabled: enableCoverage,
  90. // coverageDir: 'output/coverage',
  91. // include: ["**/*.{js,jsx,ts,tsx}"],
  92. // exclude: ["**/*.d.ts", "**/node_modules/**", "**/examples/**"],
  93. // },
  94. disableDefaultInit: {
  95. require: "./plugins/disableDefaultInit.js",
  96. enabled: true,
  97. },
  98. featureFlags: {
  99. require: "./plugins/featureFlags.js",
  100. enabled: true,
  101. defaultFeatureFlags: require("./setup/feature-flags"),
  102. },
  103. istanbulCoverage: {
  104. require: "./plugins/istanbulСoverage.js",
  105. enabled: enableCoverage,
  106. uniqueFileName: true,
  107. coverageDir: "../coverage",
  108. include: ["**/*.{js,jsx,ts,tsx}"],
  109. exclude: ["**/*.d.ts", "**/node_modules/**", "**/examples/**"],
  110. actionCoverage: {
  111. enabled: false,
  112. include: ["**/src/**"],
  113. exclude: ["**/common/**", "**/components/**"],
  114. },
  115. },
  116. errorsCollector: {
  117. require: "./plugins/errorsCollector.js",
  118. enabled: true,
  119. uncaughtErrorFilter: {
  120. interrupt: true,
  121. ignore: [
  122. // @todo: solve the problems below
  123. /^TypeError: Cannot read properties of null \(reading 'getBoundingClientRect'\)/,
  124. /The play\(\) request was interrupted/,
  125. ],
  126. },
  127. consoleErrorFilter: {
  128. // @todo switch it on to feel the pain
  129. display: false,
  130. },
  131. },
  132. stepLogsModifier: {
  133. require: "./plugins/stepLogsModifier.js",
  134. enabled: true,
  135. modifyStepLogs: [
  136. {
  137. stepNameMatcher: "executeScript",
  138. rule: "hideFunction",
  139. },
  140. ],
  141. },
  142. screenshotOnFail: {
  143. enabled: true,
  144. },
  145. pauseOnFail: {},
  146. },
  147. require: ["ts-node/register"],
  148. };