在剧作家测试中添加Cookie

时间:2020-10-05 15:19:46

标签: javascript puppeteer e2e-testing playwright

无论我做什么,都会收到错误(X.cookies不是函数,或者X.addCookies不是函数)。我尝试使用上下文page.context。 browserContext等,并且总是以相同的方式结束(好的,page.context和browserContext是未定义的,因此错误有所不同)。

上下文:

  • 编剧版本:1.4.2
  • 操作系统:Ubuntu 20.4
  • Node.js版本:10.15.1
  • 浏览器:铬

代码:

beforeEach(async function fn() {
this.timeout(20000);
browser = await chromium.launch({ headless: false });

const context = await browser.newContext();
page = await context.newPage();

await page
  .goto("http://localhost:4200/#/login", {
    waitUntil: "networkidle0",
  })
  .catch(() => {});

});

并处于测试状态:

      // await context.addCookies([
  //   { name: "csrftoken", value: cookieToken, path: "/" },
  //   { name: "sessionid", value: cookieSession, path: "/" },
  // ]);
  // await context.cookies();

2 个答案:

答案 0 :(得分:0)

为了使用 playwright 设置 cookie,您需要同时添加 pathdomainurl。参见addCookies docs

中的注释代码
**browserContext.addCookies(cookies)**

cookies <Array<Object>>
name <string>
value <string>
url <string> either url or domain / path are required. Optional. // ***** NOTE *****
domain <string> either url or domain / path are required Optional. // ***** NOTE *****
path <string> either url or domain / path are required Optional. // ***** NOTE *****
expires <number> Unix time in seconds. Optional.
httpOnly <boolean> Optional.
secure <boolean> Optional.
sameSite <"Strict"|"Lax"|"None"> Optional.

returns: <Promise<void>>

这与 standard behavior 的行为不同,其中域是可选的。

答案 1 :(得分:-1)

const上下文仅在beforeEach方法内部设置,在测试中不可用。

将其定义为全局变量