【问题标题】:Multi user e2e testing with puppeteer使用 puppeteer 进行多用户 e2e 测试
【发布时间】:2020-11-10 19:08:33
【问题描述】:
我正在寻找一种产品,它允许我模拟/测试多个(超过两个)用户,每个用户都登录到他们的帐户,使用 Web 应用程序。
测试中有多个用户并不是为了模拟高负载,就像压力测试的情况一样;也不是为了缩短并行测试的测试时间。原因是为了测试应用程序在用户相互交互时是否正确运行。
所以基本上每个用户都会有自己的会话 cookie,通过 ajax 或他们发送的普通 GET 和 POST 请求发送。
每个用户都可以居住在单独的窗口中,也可以位于单个页面上的 iframe 中。
阅读完这些问题后,我无法确定这在最新版本的 puppeteer 中是否可行。这可以实现吗?
问题:
【问题讨论】:
标签:
automated-tests
puppeteer
e2e-testing
functional-testing
【解决方案1】:
如果我理解正确,您需要针对这种情况进行一些 e2e 测试吗?
我使用 puppeteer 作为测试框架 + Jest 作为测试运行器(都更新到最新版本)。在一些测试套件中,我有超过 3 个测试用例,我需要在不同的浏览器中分别登录用户 + 一些测试用例,其中 2 个不同的用户相互交互。
例如,您可以使用以下命令创建不同的页面:
const createIncognitoPage = async () => {
const newPage = await page
.browser()
.createIncognitoBrowserContext()
.then(c => c.newPage());
return newPage;
};
之后你可以在你的测试套件中使用它:
let clientPage: Page;
it('waitForClientElement', async () => {
clientPage = await createIncognitoPage();
clientpage.goto('url')
clientPage.waitFor(element);
});
let adminPage: Page;
it('waitForSomeoneAnotherElement', async () => {
adminPage = await createIncognitoPage();
await adminPage.goto('adminpageUrl'
});
// then you can iterate between created pages and close em if needed
这是一个非常简单的例子。您可以在页面等之间进行迭代。还可以在 beforeAll 块中创建页面。希望这会有所帮助!