【问题标题】: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 块中创建页面。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 2015-06-14
      • 1970-01-01
      • 2016-05-19
      • 2022-12-16
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多