codeceptjs / CodeceptJS

Supercharged End 2 End Testing Framework for NodeJS
http://codecept.io
MIT License
4.07k stars 720 forks source link

overriding the configuration for the multi-session by passing a second parameter don't work #4401

Open RaspFR opened 1 week ago

RaspFR commented 1 week ago

What are you trying to achieve?

I'm trying to override the configuration for multi-session by passing a second parameter to the session function. I want the configuration to apply the overridden settings, but it doesn't work as expected.

What do you get instead?

The overriding doesn't apply; the default configuration in codecept.conf.ts is still being applied.

Provide console output if related. Use --verbose mode for more details.

> crossdevices@1.0.0 codeceptjs
> codeceptjs run --verbose

***************************************
nodeInfo:  16.18.1
osInfo:  macOS 14.4
cpuInfo:  (8) arm64 Apple M2
chromeInfo:  126.0.6478.61
edgeInfo:  126.0.2592.61
firefoxInfo:  undefined
safariInfo:  17.4
If you need more detailed info, just run this: npx codeceptjs info
***************************************
CodeceptJS v3.6.3 #StandWithUkraine
Using test root "/Users/raspfr/repo/poc/crossdevices"
Helpers: Playwright
Plugins: screenshotOnFail, tryTo, retryFailedStep, retryTo, eachElement

login --
    [1]  Starting recording promises
    Timeouts: 
 › [Session] Starting singleton browser session
  test something
    I am on page "https://www.google.com"
    › [Browser:Error] Permissions policy violation: unload is not allowed in this document.
    I wait 5
 › [New Context] {"browser":"webkit","emulate":{"userAgent":"Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1","viewport":{"width":393,"height":660},"screen":{"width":393,"height":852},"deviceScaleFactor":3,"isMobile":true,"hasTouch":true,"defaultBrowserType":"webkit"}}
    mobile: I am on page "https://www.google.com"
    › [Browser:Info] Autofocus processing was blocked because a document already has a focused element.
    › [Browser:Error] Permissions policy violation: unload is not allowed in this document.
    mobile: I wait 5
  ✔ OK in 11410ms

  OK  | 1 passed   // 13s

Provide test source code if related

import { devices } from "playwright";

Feature("login");

Scenario("test something", ({ I }) => {
  I.amOnPage("https://www.google.com");
  I.wait(5);
  session(
    "mobile",
    {
      browser: "webkit",
      emulate: devices["iPhone 14 Pro"],
    },
    () => {
      I.amOnPage("https://www.google.com");
      I.wait(5);
    }
  );
});

Details

CodeceptJS version: 3.6.3 NodeJS Version: 20.14.5 Operating System: MacOS 14.4 (23E214) playwright 1.44.1

import { setHeadlessWhen, setCommonPlugins } from "@codeceptjs/configure";
import { devices } from "playwright";

// turn on headless mode when running with HEADLESS=true environment variable
// export HEADLESS=true && npx codeceptjs run
setHeadlessWhen(process.env.HEADLESS);

// enable all common plugins https://github.com/codeceptjs/configure#setcommonplugins
setCommonPlugins();

export const config: CodeceptJS.MainConfig = {
  tests: "./*_test.ts",
  output: "./output",
  helpers: {
    Playwright: {
      browser: "chromium",
      emulate: devices["Chrome Desktop"],
      url: "http://localhost",
      show: true,
    },
  },
  include: {
    I: "./steps_file",
  },
  name: "crossdevices",
};

multisession_issue