是否有记录Jest / Puppeteer测试套件的常规方法?

时间:2019-08-12 15:29:40

标签: javascript jestjs puppeteer

问题摘要:我正在使用Jest和Puppeteer编写一些测试套件,以自动完成Angular JS应用的端到端测试。我从事大量文档工作,因为帮助未来的开发人员加快速度非常重要。不幸的是,我不知道记录由Jest编写的测试套件的常规/广泛接受的方法。我已经编写了广泛的自述文件,其中介绍了我们正在使用的工具,我的团队如何配置Jest / Puppeteer以及如何开始编写测试。我特别想知道的是如何在每个测试套件中记录文档,或者甚至有必要花时间做这些事情(我倾向于是的,绝对是值得花费的时间在后一个问题上做)。

以下是一些我想记录的示例代码:

// index.spec.js
// Insert comment here describing test file (aka test suite)
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();

    // Insert comment here describing test suite
    describe('load startpage', async () => {
        // Insert comment here describing test
        test('page loads', async () => {
          await page.goto('https://my-site.com', {waitUntil: 'networkidle0'});
        });
    });
    // Insert comment here describing test suite
    describe('complete form', async () => {
        // Insert comment here describing test
        test('populate form', async () => {
            let formSelector = 'form[name="form1"]';
            await page.waitForSelector(formSelector, {timeout: 3000}); 
            await page.waitForSelector(formSelector+' input', {timeout: 3000});
            await page.click(formSelector+' input');
            await page.keyboard.type('Hello World');
            let submitButtonSelector = 'form[name="form1"] button[type="submit"]';
            await page.click(submitButtonSelector);
        });
        // Insert comment here describing test
        test('submit form', async() => {
            let submitButtonSelector = 'form[name="form1"] button[type="submit"]';
            await page.waitForSelector(submitButtonSelector, {timeout: 3000}); 
            await page.click(submitButtonSelector);
        });
    });
    await browser.close();
})();

我已经尝试过的操作: 我已经研究了一些通过JSDoc来记录Javascript的常规方法,但是我并不认为这适用于此,因为我使用的是Jest和Puppeteer Apis,我认为它们是本机Javascript函数的包装器。

问题:你们中的Jest / Puppeteer黑客是否知道记录测试的正确方法?预先谢谢你!

1 个答案:

答案 0 :(得分:1)

我将尝试调整此响应,使其听起来不完全自觉。

是的,文档是必不可少的,但是太多也不能很好地发挥作用。

对于测试而言,无论是unit / integration / e2e,框架已经为您提供了指定/记录测试所需的所有构造。据我所知,没有其他约定可以记录测试套件。

describe / it / test / etc块应被视为文档,并且应指导任何开发人员通过编写测试者的意图。

在极少数情况下,任何其他必要的评论都可以内联完成。

测试的好处在于,如果规范写得好,运行时它的读起来就像一本书。是的,用小短语描述测试很困难,就像命名变量一样。进行练习,但这是可行的。

自述文件中已经涵盖了所有需要的文档。

除了具有良好的测试规范外,您还将获得更多的价值,可确保以一致的方式编写测试,而不是试图解释每个测试的详细内容,让代码做到这一点。