javascript - 有没有一种传统的方法来记录 Jest/Puppeteer 测试套件?

标签 javascript jestjs puppeteer

<分区>

问题总结:我正在使用 Jest 和 Puppeteer 编写几个测试套件来自动化我的 Angular JS 应用程序的端到端测试。我非常喜欢文档,因为帮助 future 的开发人员更快上手很重要。不幸的是,我不知道有一种传统的/广泛接受的方法来记录用 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 黑客知道记录测试的正确方法吗?提前致谢!

最佳答案

我会尝试调整此回复,以免听起来完全自以为是。

是的,文档是必不可少的,但太多也不好用。

在测试的情况下,无论是单元/集成/e2e,框架已经为您提供了指定/记录测试所需的所有结构。据我所知,没有任何其他约定来记录测试套件。

describe/it/test/etc block 应该被视为文档,它们应该指导任何开发人员了解编写测试的人的意图。

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

测试的美妙之处在于,当它们的规范编写得很好时,运行时读起来就像一本书。是的,用简短的短语描述你的测试是很困难的,就像命名一个变量一样。需要练习,但这是可行的。

除了您已经在 README 中涵盖的文档之外,还需要任何文档。

除了拥有良好的测试规范之外,您将在确保以一致性编写测试方面获得更多值(value),而不是试图详细解释每个测试中发生的事情,让代码来做。

关于javascript - 有没有一种传统的方法来记录 Jest/Puppeteer 测试套件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464100/

相关文章:

Javascript 检查一个数组中的项目是否存在于另一个数组中?

reactjs - Jest 测试 Babel 错误 : Plugin/Preset files are not allowed to export objects

javascript - NodeJS CSVReader - 带有 csv-parse 的 createReadStream 返回空数组

javascript - 如何在 JS 的 setInterval 中等待?

Electron - 不能在工作线程中使用 puppeteer

c# - 具有高级功能的表

javascript - Backbone.js中不同 View 的调用方法

javascript - 如何在node.js中获取JSON文件?

typescript - 如何配置 Jest 以转换包含无效语法的模块?

javascript - 使用 Puppeteer 将结果抓取到 JSON 时重启无限