CodeceptJS icon indicating copy to clipboard operation
CodeceptJS copied to clipboard

Missing TS definition for effects: Cannot find module 'codeceptjs/effects' or its corresponding type declarations

Open mirao opened this issue 5 months ago • 0 comments

Steps:

Run this TypeScript test in 3.7.x (https://codecept.io/effects.html#usage-with-typescript says that it should work)

Feature("My");

import { tryTo } from "codeceptjs/effects";

Scenario("test something", async ({ I }) => {
  I.amOnPage("https://example.com");

  // inside a test
  const success = await tryTo(() => {
    // These steps may fail but won't stop the test
    I.see("Example Domain2");
  });
  
  if (!success) {
    I.say("The text 'Example Domain2' was not found, but the test continues.");
  }
});

with this config (note global plugins are disabled because they are deprecated, see https://codecept.io/effects.html#installation)

import { setHeadlessWhen, setCommonPlugins } from '@codeceptjs/configure';
// 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',
      url: 'http://localhost',
      show: true
    }
  },
  include: {
    I: './steps_file'
  },
  name: 'tmp'
}

Expected result:

  • The test passes

Actual result:

  • Unable to compile TS
mirao@jobr-ubuntu:~/tmp$ npx codeceptjs run My_test.ts --verbose
***************************************
nodeInfo:  20.19.0
osInfo:  Linux 6.11 Ubuntu 24.04.2 LTS 24.04.2 LTS (Noble Numbat)
cpuInfo:  (16) x64 AMD Ryzen 9 7940HS w/ Radeon 780M Graphics
chromeInfo:  136.0.7103.113
edgeInfo:  "N/A"
firefoxInfo:  undefined
safariInfo:  N/A
playwrightBrowsers:  "chromium: 136.0.7103.25, firefox: 137.0, webkit: 18.4"
If you need more detailed info, just run this: npx codeceptjs info
***************************************
TSError: ⨯ Unable to compile TypeScript:
My_test.ts:3:23 - error TS2307: Cannot find module 'codeceptjs/effects' or its corresponding type declarations.

3 import { tryTo } from "codeceptjs/effects";
                        ~~~~~~~~~~~~~~~~~~~~

    at createTSError (/home/mirao/tmp/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/home/mirao/tmp/node_modules/ts-node/src/index.ts:863:19)
    at getOutput (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1077:36)
    at Object.compile (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1433:41)
    at Module.m._compile (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1613:10)
    at Object.require.extensions.<computed> [as .ts] (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1275:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1096:12)
    at Module.require (node:internal/modules/cjs/loader:1298:19)

⨯ Unable to compile TypeScript:
My_test.ts:3:23 - error TS2307: Cannot find module 'codeceptjs/effects' or its corresponding type declarations.

3 import { tryTo } from "codeceptjs/effects";
                        ~~~~~~~~~~~~~~~~~~~~


TSError: 
    at createTSError (/home/mirao/tmp/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/home/mirao/tmp/node_modules/ts-node/src/index.ts:863:19)
    at getOutput (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1077:36)
    at Object.compile (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1433:41)
    at Module.m._compile (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1613:10)
    at Object.require.extensions.<computed> [as .ts] (/home/mirao/tmp/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1275:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1096:12)
    at Module.require (node:internal/modules/cjs/loader:1298:19)

Woarkound: (helped by GitHub Copilot)

  • Create types/codeceptjs-effects.d.ts with this content
// Type definitions for codeceptjs/effects
declare module "codeceptjs/effects" {
  export function tryTo(fn: () => void | Promise<void>): Promise<boolean>;
}

Used SW:

  • CodeceptJS 3.7.3
  • Playwright 1.52

mirao avatar May 28 '25 11:05 mirao