如何从Chrome开发工具中获取“覆盖率”数据

watbbzwu  于 2023-05-11  发布在  Go
关注(0)|答案(4)|浏览(260)

我在我的Chrome开发工具中使用Coverage选项卡,我有一个非常大的文件,在使用Coverage很多次之后,很明显只有15%的CSS代码被使用(我模拟了按钮按下,悬停菜单...)。
问题是让帽子15%的代码覆盖率标签。我不敢相信这个非常好的功能背后的开发人员没有想到一个简单的方法,为最终用户复制只绿色的代码部分。检查随附的图像。
你知道我怎么能做到吗我读过一些关于使用 puppet 师的东西,但它需要大量的准备。在最新的Canary版本中,看起来我可以导出JSON,但需要一些时间来编写JSON的解析器,以便只提取所需的部分。

8fsztsew

8fsztsew1#

感谢菲利普Kriegel(https://www.philkrie.me/2018/07/04/extracting-coverage.html)的一篇文章,我成功地设置了Puppeteer,从URL中提取覆盖CSS,并将CSS输出到一个文件中。
下面是如何做到这一点:
步骤1:全局安装node.js
步骤2:在桌面上创建文件夹
步骤3:在文件夹中安装节点包管理器(NPM)和Puppeteer节点模块
步骤4:在文件夹中创建一个JavaScript文件,命名为coverage.js
第5步:将此代码放入js文件中:

const puppeteer = require('puppeteer');
// Include to be able to export files w/ node
const fs = require('fs');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Begin collecting CSS coverage data
    await Promise.all([
        page.coverage.startCSSCoverage()
    ]);

    // Visit desired page
    await page.goto('https://www.google.com');
  
    //Stop collection and retrieve the coverage iterator
    const cssCoverage = await Promise.all([
        page.coverage.stopCSSCoverage(),
    ]);

    //Investigate CSS Coverage and Extract Used CSS
    const css_coverage = [...cssCoverage];
    let css_used_bytes = 0;
    let css_total_bytes = 0;
    let covered_css = "";
    
    for (const entry of css_coverage[0]) {
        
        css_total_bytes += entry.text.length;
        console.log(`Total Bytes for ${entry.url}: ${entry.text.length}`);

        for (const range of entry.ranges){
            css_used_bytes += range.end - range.start - 1;
            covered_css += entry.text.slice(range.start, range.end) + "\n";
        }       
    }

    console.log(`Total Bytes of CSS: ${css_total_bytes}`);
    console.log(`Used Bytes of CSS: ${css_used_bytes}`);
    fs.writeFile("./exported_css.css", covered_css, function(err) {
        if(err) {
            return console.log(err);
        }
        console.log("The file was saved!");
    }); 

    await browser.close();
})();

第6步:确保将代码await page.goto('https://www.google.com');中的URL替换为所需的URL
第7步:在命令行工具(Git Bash)中输入node coverage.js
将创建一个名为exported_css. css的文件,它将包含您在代码中设置的URL的所有覆盖CSS。
警告:这将从所有从您设置的URL加载的CSS资源中提取覆盖率CSS。然后,您将不得不进一步优化该CSS(本示例中未涉及)。

olqngx59

olqngx592#

打开Chrome选项卡-->检查元素(F12)-->按退出按钮x1c 0d1x

smdncfj3

smdncfj33#

我正在创建一个PHP脚本,它可以解析Coverage JSON导出文件,并仅输出提取的CSS/JS。不幸的是,我遇到了一个障碍,在某个时候JSON解析器丢失了正确的字符数,我最终得到了不完整或不正确的CSS/JS语法。它只差了几个字符,但是它差的字符数量是可变的,所以在解析过程中几乎不可能预测它。
我不确定,但我认为这个问题是由于PHP在服务器上运行造成的,服务器可能会以不同于浏览器的方式读取原始CSS文件中的字符。我将尝试用JavaScript编写一个Coverage JSON解析器。当我这样做的时候,我一定会在这里发布代码供所有人使用。
抱歉,我不能提供更多的帮助,我只是想警告人们不要使用PHP来做这件事,因为它似乎无法正确读取大型CSS文件中的字符数。

aurhwmvo

aurhwmvo4#

你可以使用这个按钮导出到json,但是我无法理解输出的意义或找到任何文档
更多信息:https://umaar.com/dev-tips/187-code-coverage-export/

相关问题