{"id":15706527,"url":"https://github.com/gwuhaolin/chrome-tester","last_synced_at":"2025-05-12T18:55:36.097Z","repository":{"id":80950161,"uuid":"95288796","full_name":"gwuhaolin/chrome-tester","owner":"gwuhaolin","description":"web page automatic tester","archived":false,"fork":false,"pushed_at":"2018-04-13T08:09:36.000Z","size":9,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T01:51:08.411Z","etag":null,"topics":["autotest","chrome"],"latest_commit_sha":null,"homepage":"","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/gwuhaolin.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":"2017-06-24T09:40:38.000Z","updated_at":"2019-04-12T16:47:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"c39897a5-d2be-4b74-bdfd-98e1a216fcc9","html_url":"https://github.com/gwuhaolin/chrome-tester","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fchrome-tester","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fchrome-tester/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fchrome-tester/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gwuhaolin%2Fchrome-tester/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gwuhaolin","download_url":"https://codeload.github.com/gwuhaolin/chrome-tester/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253805273,"owners_count":21967050,"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","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":["autotest","chrome"],"created_at":"2024-10-03T20:23:52.521Z","updated_at":"2025-05-12T18:55:36.073Z","avatar_url":"https://github.com/gwuhaolin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Npm Package](https://img.shields.io/npm/v/chrome-tester.svg?style=flat-square)](https://www.npmjs.com/package/chrome-tester)\n[![Build Status](https://img.shields.io/travis/gwuhaolin/chrome-tester.svg?style=flat-square)](https://travis-ci.org/gwuhaolin/chrome-tester)\n[![Dependency Status](https://david-dm.org/gwuhaolin/chrome-tester.svg?style=flat-square)](https://npmjs.org/package/chrome-tester)\n[![Npm Downloads](http://img.shields.io/npm/dm/chrome-tester.svg?style=flat-square)](https://www.npmjs.com/package/chrome-tester)\n\n# chrome-tester\nWeb page auto tester with headless chrome\n\n## Use\n```js\nconst Tester = require('chrome-tester');\nconst tester = new Tester();\nawait tester.init();\nconst job = {\n  url: 'https://ke.qq.com',\n  tests: [\n    {\n      des: 'succ test',\n      script: `return true`\n    },\n    {\n      des: 'fail test',\n      script: `throw 1`\n    }\n  ]\n}\nconst executor = await tester.exec(job);\nexecutor.on('test-pass', (test, value) =\u003e {\n  console.log('test-pass');\n  assert.equal(test.des, 'succ test');\n  assert.equal(value, true);\n});\nexecutor.on('test-failed', (test, exceptionDetails) =\u003e {\n  console.log('test-failed');\n  assert.equal(test.des, 'fail test');\n  assert.equal(exceptionDetails.exception.value, 1);\n});\nawait executor.wait();\nconst dom = await executor.getDOM();\nawait tester.destroy();\n```\n- `tester.init()`: await tester be ready\n- `tester.exec(job)`: run a test job, this will return a `executor` used to listen on some events\n- `await executor.wait()`: await until all unit tests job has done\n- `await executor.getDOM()`: get page current dom node\n-  `tester.destroy()`: destroy this tester, close chrome, release resource\n\n### tester.exec options\n-  url {string}: required, web page url\n-  referrer {string}: http request referrer header\n-  cookies {Object}: http request cookies\n-  headers {Object}: http request headers\n-  injectScript {string}: inject script to exec after domContentEventFired\n-  tests {Array}: unit tests will run after injectScript has been inject, tests will be run one by one in order\n   element in tests should be:\n   ```js\n     {  \n       script {string}: unit test script content,\n       ... other props\n     }\n   ```\n   \n### executor events table\n- log: chrome console out\n- error: window.onerror | unhandledrejection\n- test-pass: unit test exec complete\n- test-failed: unit test exec complete\n- done: exec complete\n- pageload-failed: page cant load\n- network-failed: Network.loadingFailed event\n- network-received: Network.loadingFailed event\n\nsee [unit test](./test/tester.test.js) for more use case.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwuhaolin%2Fchrome-tester","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgwuhaolin%2Fchrome-tester","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgwuhaolin%2Fchrome-tester/lists"}