【问题标题】:Jest Test Error: browserType.launch: setImmediate is not defined. While using Playwright开玩笑测试错误:browserType.launch:未定义 setImmediate。使用剧作家时
【发布时间】:2021-10-12 23:07:58
【问题描述】:

在我的 Javascript 代码中使用 jest 进行测试时出现错误。

错误:

失败 src/test/testPlaywright.test.jsx (5.779 秒) × 创建与剧作家互动的快照(149 毫秒)

● 创建与剧作家互动的快照

browserType.launch: setImmediate is not defined

  4 |     for(const browserType of [chromium, firefox, webkit]){
  5 |         console.log("Testing");
> 6 |         const browser = await browserType.launch({headless: false});
    |                                           ^
  7 |         const page = await browser.newPage();
  8 |         await page.setDefaultNavigationTimeout(1000000);
  9 |         await page.goto('https://app.wien.gv.at/navigation/', { waitUntil: 'networkidle' });

  at Object.<anonymous> (src/test/testPlaywright.test.jsx:6:43)

测试套件:1 个失败,总共 1 个 测试:1 次失败,总共 1 次 快照:共 0 个 时间:8.517 秒 运行与更改的文件相关的所有测试套件。

代码:

import { chromium, webkit, firefox } from "playwright";

test('Creating a Snapshot of interacting with playwright',async()=>{
    for(const browserType of [chromium, firefox, webkit]){
        console.log("Testing");
        const browser = await browserType.launch({headless: false});
        const page = await browser.newPage();
        await page.setDefaultNavigationTimeout(1000000); 
        await page.goto('https://app.wien.gv.at/navigation/', { waitUntil: 'networkidle' });

        await page.click("(//mat-icon[text()='keyboard_arrow_down'])[1]")
        await page.click("#mat-select-0")
        await page.click('//span[@class="mat-option-text"][contains(.,"Veranstaltungszentrum")]')
        await page.click("//mat-icon[text()='keyboard_arrow_up']")
        
        await page.click("(//mat-icon[text()='keyboard_arrow_down'])[2]")
        await page.click("#mat-select-3")
        await page.click('//span[@class="mat-option-text"][contains(.,"Kapelle Krankenhaus Hietzing")]')

        await page.waitForTimeout(2000);

        await page.screenshot({path:'image-'+browserType.name()+'.png'});
        
        await browser.close();
    }
})

【问题讨论】:

    标签: javascript jestjs playwright


    【解决方案1】:

    我怀疑你的 jest.config.js 包含

    testEnvironment: 'jsdom'

    您可以尝试删除此设置或

     testEnvironment: 'node'

    希望你好运。

    【讨论】:

    • 这在测试UI时不起作用,应该有其他解决方案或错误修复
    【解决方案2】:

    问题在于 setImmediate 函数。

    我刚刚在我的测试类中添加了 polyfill.js:import 'core-js'; 之后再次定义 setImmediate 并按预期工作。

    【讨论】:

    • 感谢这对我有用,我将core-js 添加到jest.config.js 中的setupFiles 数组中
    • 奇怪的是,虽然我发誓它曾经被支持,但最新版本的 Chrome、Firefox、Safari 甚至 edge 不再支持 setImmediate (而且它可以很容易地用 setTimeout(() => func(), 0) 所以可能不值得维护。developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate
    猜你喜欢
    • 2017-11-01
    • 2021-08-14
    • 2018-06-02
    • 2019-09-25
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2018-08-05
    相关资源
    最近更新 更多