-
- Notifications
You must be signed in to change notification settings - Fork 752
Open
Description
config codecept.conf.ts
export const config: CodeceptJS.MainConfig = { tests: "./*_test.ts", output: "./output", helpers: { Playwright: { browser: "chromium", url: "http://localhost", show: true, }, }, name: "esm", require: ["ts-node/esm"], // ! You can also test it with `require: ["tsx/esm"]`, but you get the same issue ! };tsconfig.json (as suggested by CodeceptJS if you run a test without any "require" in your config) in 4.x
{ "ts-node": { "files": true, "esm": true, "experimentalSpecifierResolution": "node" }, "compilerOptions": { "target": "es2022", "lib": ["es2022", "DOM"], "esModuleInterop": true, "module": "esnext", "moduleResolution": "node", "strictNullChecks": false, "types": ["codeceptjs", "node"], "declaration": true, "skipLibCheck": true, }, "exclude": ["node_modules"], }PO pages/Login.ts:
const { I } = inject(); export default { login(username: string) { I.say("Logging in with user: " + username); }, };test My_test.ts
import loginPage from "./pages/Login"; Feature("My"); Scenario("test something", () => { loginPage.login("myusername"); });Test fails ❌
mirao@rog:~/workspace/esm$ npx codeceptjs run --verbose *************************************** nodeInfo: 20.19.5 osInfo: Linux 6.14 Ubuntu 24.04.3 LTS 24.04.3 LTS (Noble Numbat) cpuInfo: (16) x64 AMD Ryzen 7 9700X 8-Core Processor chromeInfo: 142.0.7444.175 edgeInfo: "N/A" firefoxInfo: 145.0 safariInfo: N/A playwrightBrowsers: "chromium: 141.0.7390.37, firefox: 142.0.1, webkit: 26.0" If you need more detailed info, just run this: npx codeceptjs info *************************************** Error: Cannot find module '/home/mirao/workspace/esm/pages/Login' imported from /home/mirao/workspace/esm/My_test.ts Did you mean to import "./pages/Login.ts"? at finalizeResolution (node:internal/modules/esm/resolve:283:11) at moduleResolve (node:internal/modules/esm/resolve:952:10) at defaultResolve (node:internal/modules/esm/resolve:1188:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:708:12) at ModuleLoader.#cachedDefaultResolve (node:internal/modules/esm/loader:657:25) at ModuleLoader.getModuleJobForRequire (node:internal/modules/esm/loader:413:53) at new ModuleJobSync (node:internal/modules/esm/module_job:375:34) at ModuleLoader.importSyncForRequire (node:internal/modules/esm/loader:386:11) at loadESMFromCJS (node:internal/modules/cjs/loader:1363:24) at Module._compile (node:internal/modules/cjs/loader:1503:5) Cannot find module '/home/mirao/workspace/esm/pages/Login' imported from /home/mirao/workspace/esm/My_test.ts Did you mean to import "./pages/Login.ts"? Error: at finalizeResolution (node:internal/modules/esm/resolve:283:11) at moduleResolve (node:internal/modules/esm/resolve:952:10) at defaultResolve (node:internal/modules/esm/resolve:1188:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:708:12) at ModuleLoader.#cachedDefaultResolve (node:internal/modules/esm/loader:657:25) at ModuleLoader.getModuleJobForRequire (node:internal/modules/esm/loader:413:53) at new ModuleJobSync (node:internal/modules/esm/module_job:375:34) at ModuleLoader.importSyncForRequire (node:internal/modules/esm/loader:386:11) at loadESMFromCJS (node:internal/modules/cjs/loader:1363:24) at Module._compile (node:internal/modules/cjs/loader:1503:5) If you use the default option "module": "commonjs", it works well ✔️
CodeceptJS v4.0.1-beta.15 #StandWithUkraine Using test root "/home/mirao/workspace/esm" Helpers: Playwright Plugins: screenshotOnFail My -- /home/mirao/workspace/esm/My_test.ts [1] Starting recording promises Timeouts: › [Session] Starting singleton browser session test something › [New Session] {"ignoreHTTPSErrors":false,"acceptDownloads":true} Scenario() I say "Logging in with user: myusername" Logging in with user: myusername ✔ OK in 4ms OK | 1 passed // 5s So a question is: How to setup PO for the suggested ESM module setting?
Used SW:
- CodeceptJS 4.0.1-beta.15
Copilot
Metadata
Metadata
Assignees
Labels
No labels