jest-puppeteer
jest-puppeteer copied to clipboard
Is @types/jest-environment-puppeteer still required?
After updating jest-environment-puppeteer to 9.0.1, I get the following typescript compiler error:
error TS2304: Cannot find name 'page'.
The README notes that typescript definitions are now provided for jest-puppeteer versions > v8.0.0. However, the only way I'm able to resolve the issue is by installing the @types/jest-environment-puppeteer. Is this something wrong with my configuration?
Relevant dependencies:
"@jest/globals": "^29.7.0",
"jest": "^29.7.0",
"jest-environment-puppeteer": "^9.0.1",
"puppeteer-core": "^21.4.1",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
tsconfig.json:
{
"compilerOptions": {
"noEmit": true,
"esModuleInterop": true,
"module": "commonjs",
"resolveJsonModule": true,
"target": "ES2022",
"lib": [
"ES2022",
"DOM"
],
"strict": false,
}
}
jest.config.ts
export default {
preset: "ts-jest",
globalSetup: "jest-environment-puppeteer/setup",
globalTeardown: "jest-environment-puppeteer/teardown",
testEnvironment: "jest-environment-puppeteer",
testTimeout: 30000,
}
@pyoor Thank you kind sir for this wisdom I was experiencing a similar issue and adding the latest @types/jest-environment-puppeteer to my devDependencies in my package.json helped me resolve my problem.
In my case version 5.0.6 worked just fine of @types/jest-environment-puppeteer - https://www.npmjs.com/package/@types/jest-environment-puppeteer
I am unable to use @types/jest-environment-puppeteer to work around this while also using [email protected]. Installing @types/jest-environment-puppeteer devDependency then results in:
node_modules/.pnpm/[email protected]/node_modules/expect-puppeteer/dist/index.d.ts:1:38 - error TS2305: Module '"puppeteer"' has no exported member 'FrameWaitForFunctionOptions'.
1 import { Page, Frame, ElementHandle, FrameWaitForFunctionOptions, ClickOptions, Dialog } from 'puppeteer';
I see from lock file that using @types/[email protected] results in the addition of several older and duplicate packages like [email protected] where without already had dependency on jest-environment-node/29.7.0.
Directly @types/jest-environment-puppeteer/5.0.6 has dependencies:
'@jest/types': 26.6.2
'@types/puppeteer': 5.4.7 <-- does not have FrameWaitForFunctionOptions
jest-environment-node: 27.5.1
The difference I see in the @types versus package is that the global additions are not declared. @types has:
declare global {
const browser: Browser;
const context: BrowserContext;
const page: Page;
const jestPuppeteer: JestPuppeteer;
}
Per the difficulties I ran into, I built a local @types/jest-environment-puppeteer that re-exports jest-environment-puppeteer with the addition of global declaration:
declare global {
const browser: JestPuppeteerGlobal["browser"];
const context: JestPuppeteerGlobal["context"];
const page: JestPuppeteerGlobal["page"];
const jestPuppeteer: JestPuppeteerGlobal["jestPuppeteer"];
}
Does this section help?
https://github.com/argos-ci/jest-puppeteer/tree/main?tab=readme-ov-file#prevent-eslint-errors-on-global-variables
Feel free to submit a PR to fix things if not correct please.