You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jasmine集成Puppeteer测试报错:SyntaxError意外标识符问题

解决Jasmine中使用Puppeteer时的SyntaxError问题

你遇到的SyntaxError: Unexpected identifier是个典型的async/await使用错误——await只能在标记为async的函数内部使用,你的测试代码里多个回调函数都没加async,导致JS引擎无法识别await关键字。除此之外还有几个小细节需要调整,下面是修复后的完整代码和问题解析:

修复后的完整代码

const puppeteer = require('puppeteer');

describe("Jasmine puppeteer", function() {
  let browser;
  let page;

  beforeAll(async () => {
    browser = await puppeteer.launch({headless: false});
    page = await browser.newPage();
    await page.goto('chrome://newtab');
    await page.screenshot({path: 'a.png'});
  });

  it("should verify newtab page title", async () => {
    const pageTitle = await page.title();
    expect(pageTitle).toBe("");
  });

  afterAll(async () => {
    await browser.close();
  });
});

关键修改点解析

  1. 给beforeAll添加async关键字
    这是解决你当前报错的核心:puppeteer.launch()、page.goto()这些都是异步方法,需要用await等待它们完成,而await必须包裹在async函数里。没有async前缀的话,JS会把await当成一个未定义的标识符,直接抛出语法错误。

  2. 调整it测试用例

    • 同样给回调函数加上async,这样才能用await获取页面标题。
    • 移除了done():当测试函数是async类型时,Jasmine会自动等待函数内部的Promise完成,手动调用done()反而会触发测试超时(因为Jasmine会认为你还有未完成的异步操作)。
  3. 完善afterAll钩子
    添加async关键字并调用await browser.close(),测试结束后关闭浏览器进程,避免不必要的资源占用。

运行验证

确保你的package.json中test脚本指向Jasmine,比如:

{
  "scripts": {
    "test": "jasmine"
  }
}

然后执行命令:

npm test spec/testspec.js

现在应该能正常启动Puppeteer、执行测试并关闭浏览器了。

内容的提问来源于stack exchange,提问作者Karan Jit Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:56:43