Абстрактный класс настройки/входа в систему с помощью Javascript/Кукловод

#javascript #puppeteer #jest-puppeteer

Вопрос:

Я пытаюсь создать класс «Сеансы» с использованием Javascript/Puppeteer, и я абсолютно недостаточно знаком ни с JS, ни с Puppeteer, чтобы заставить его работать.

Я предполагаю, что я просто сталкиваюсь с ограничением асинхронных функций, но, честно говоря, я понятия не имею.

Кукольник успешно открывает браузер и переходит на веб-сайт, но он застревает в начале функции входа в систему «Testing1» и никогда не переходит в «Testing2».

Может ли кто-нибудь посмотреть на приведенный ниже код и сказать мне, в чем я ошибаюсь? Есть 30-40 тестовых классов, и я хотел бы выделить функцию настройки/входа в систему из каждого класса.

Поэтому у меня есть урок «Сеансы», который выглядит так.

 import {puppeteer} from "../types.cjs"; import {PuppetOptions} from "../data.js";  export class Session {  glPage;  glBrowser;   constructor(url) {  puppeteer.launch(PuppetOptions)  .then(async (browser) =gt; {  this.glBrowser = browser  this.glPage = await browser.newPage();  await this.glPage.goto(url);  });  }   async login(username, password) {  console.log("testing")  await this.glPage.waitForSelector('#idp-discovery-username')  console.log("testing2")    await this.glPage.type("#idp-discovery-username", username);  await this.glPage.evaluate(() =gt; {  document.querySelector('#idp-discovery-submit').click();  });   await this.glPage.waitForSelector('#okta-signin-password')  await this.glPage.type("#okta-signin-password", password)   await this.glPage.evaluate(() =gt; {  document.querySelector('#okta-signin-submit').click();  });  } }  

И я пытаюсь использовать его в своем тестовом классе следующим образом —

 describe("GL Flow", () =gt; {  before ( function () {  let test = new Session(AccountInfo.qa.url)  test.login(AccountInfo.qa.username, AccountInfo.qa.password)  });   it("Test 1 ", async () =gt; {  expect(true)  });   it("Test2", async () =gt; {  expect(true)  }); })  

Спасибо вам за всю помощь.