使用 cypress/puppeteer 登录

pet*_*rmk 6 testing automation automated-tests puppeteer cypress

我有一个使用 Okta 登录的应用程序。我正在尝试使用 Cypress 和 Puppeteer 设置自动化测试。我遇到的问题是,当我使用 启动 puppeteer 时{headless: true},它没有填写登录表单。{headless: false}在 Cypress 之外打开另一个浏览器窗口并按预期工作。它填写登录表单,正确登录,但我无法在该窗口中运行任何 cypress 测试。

on('task', {
  login({username, password}) {
    return (async () => {
      const browser = await puppeteer.launch({headless: false});
      const page = await browser.newPage();
      await page.goto(config.baseUrl);
      await page.waitForNavigation();
      await page.waitFor('#okta-signin-username');
      await page.type('#okta-signin-username', username, {delay: 100});
      await page.waitFor('#okta-signin-password');
      await page.type('#okta-signin-password', password, {delay: 100});
      await page.click('#okta-signin-submit');
      await page.waitForNavigation();
      return true;
    };
  });
Run Code Online (Sandbox Code Playgroud)

以下是它的使用方式:

it('my test', () => {
  cy.visit('/');
  cy.viewport(1280, 1024);
  cy.login('username', 'password');

  //tests go here
});
Run Code Online (Sandbox Code Playgroud)

上面的代码打开 Chromium 并正确登录,但测试失败。它不会使用 {headless: true} 登录。我在这里错过了什么吗?任何帮助,将不胜感激。

谢谢