disableDefaultInit.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const { recorder, event } = require("codeceptjs");
  2. const Container = require("codeceptjs/lib/container");
  3. const supportedHelpers = ["Playwright"];
  4. /**
  5. * This plugin will listen for setting feature flags and apply them at the moment of page loading.
  6. * In this case set feature flags will affect the whole code including models initialization,
  7. * and other similar parts that will run on the the scripts load.
  8. */
  9. module.exports = () => {
  10. const helpers = Container.helpers();
  11. let helper;
  12. for (const helperName of supportedHelpers) {
  13. if (Object.keys(helpers).indexOf(helperName) > -1) {
  14. helper = helpers[helperName];
  15. }
  16. }
  17. if (!helper) {
  18. console.error(`Feature flags is only supported in ${supportedHelpers.join(", ")}`);
  19. return;
  20. }
  21. function hasStepName(name, step) {
  22. return step && (name === step.name || hasStepName(name, step.metaStep));
  23. }
  24. event.dispatcher.on(event.step.before, async (step) => {
  25. if (hasStepName("amOnPage", step)) {
  26. recorder.add("disable default init", async () => {
  27. try {
  28. helper.page.once("requestfinished", () => {
  29. helper.page.evaluate(() => {
  30. if (!window.DISABLE_DEFAULT_LSF_INIT) window.DISABLE_DEFAULT_LSF_INIT = true;
  31. });
  32. });
  33. } catch (err) {
  34. console.error(err);
  35. }
  36. });
  37. }
  38. });
  39. };