{"id":17010503,"url":"https://github.com/raharrison/puppeteer-perf","last_synced_at":"2025-09-17T10:56:34.092Z","repository":{"id":152041059,"uuid":"199215141","full_name":"raharrison/puppeteer-perf","owner":"raharrison","description":"Website performance testing with Headless Chrome \u0026 Puppeteer","archived":false,"fork":false,"pushed_at":"2023-01-29T17:39:11.000Z","size":1206,"stargazers_count":27,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T22:27:46.311Z","etag":null,"topics":["headless-chrome","nodejs","performance","puppeteer"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raharrison.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-27T21:30:10.000Z","updated_at":"2024-10-11T00:43:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"42b4b5e8-a328-4240-a9f9-a425976f56d0","html_url":"https://github.com/raharrison/puppeteer-perf","commit_stats":{"total_commits":27,"total_committers":2,"mean_commits":13.5,"dds":0.03703703703703709,"last_synced_commit":"aad700df0cc504099e8c67cfc8886f724337d83d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/raharrison/puppeteer-perf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Fpuppeteer-perf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Fpuppeteer-perf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Fpuppeteer-perf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Fpuppeteer-perf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raharrison","download_url":"https://codeload.github.com/raharrison/puppeteer-perf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Fpuppeteer-perf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275583377,"owners_count":25490651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["headless-chrome","nodejs","performance","puppeteer"],"created_at":"2024-10-14T06:04:40.836Z","updated_at":"2025-09-17T10:56:34.062Z","avatar_url":"https://github.com/raharrison.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Puppeteer Perf\n\nMeasure and monitor website performance with Headless Chrome and Puppeteer\n\n## Key Features\n\n- Run performance tests within Chrome itself just as your users will. No emaulation or estimations\n- Measure key performance indicators for page load: DOM loaded, First Meaningful Paint, Full Page Loaded\n- Monitor page metrics: number of DOM nodes, number of restyle calculations etc\n- Track all requests made by type: how long your JS takes too load, how big is your bundle size, how many XHR requests are being made?\n- Write performance tests as standard Jest test cases\n- Automatic report creation to monitor key indicators over time\n- Save results to flat file or Sqlite database for easy analytics\n\n## Usage\n\n1. Clone repo\n2. `npm install`\n3. See example `tests/load-homepage.test.js` for sample which measures page load\n4. Run `npm run test` to being Jest test suite\n5. See `generated/` directory for performance reports\n\n```js\ndescribe(\"Load Homepage\", () =\u003e {\n    let runData;\n    beforeAll(async () =\u003e {\n        const url = \"https://ryanharrison.co.uk\";\n        runData = await measurePageLoad(browser, \"load-homepage\", url, 3);\n    });\n\n    test(\"full page load should be within 1 second\", () =\u003e {\n        expect(runData.timings.fullTime).toBeLessThan(1000);\n    });\n\n    it(\"should have less than 1500 nodes\", () =\u003e {\n        expect(runData.metrics.nodes).toBeLessThan(1500);\n    });\n});\n```\n## Reports\n\nEach test run will also generate a report allowing you to track key indicators through time. See `sample/` directory for example report.\n\n![Sample Page Load report](sample/perf_report.png)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraharrison%2Fpuppeteer-perf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraharrison%2Fpuppeteer-perf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraharrison%2Fpuppeteer-perf/lists"}