From 6561ce5334df14e5e4640051ca4dc22d98165e4c Mon Sep 17 00:00:00 2001 From: Marc Lynch Date: Mon, 28 Oct 2019 15:49:56 -0700 Subject: [PATCH] refactor(cli, core): tracing logic --- .vscode/launch.json | 16 + CHANGELOG.md | 901 ------------------ packages/cli/README.md | 3 + packages/cli/oclif.manifest.json | 2 +- packages/cli/src/commands/record-har.ts | 66 +- packages/cli/src/commands/trace.ts | 28 +- packages/cli/test/commands/trace.test.ts | 36 +- packages/cli/test/test-helpers.ts | 3 +- packages/tracerbench/src/index.ts | 1 + packages/tracerbench/src/trace/analyze.ts | 15 +- .../tracerbench/src/trace/archive_trace.ts | 9 +- packages/tracerbench/src/trace/index.ts | 1 + packages/tracerbench/src/trace/live_trace.ts | 127 ++- packages/tracerbench/src/trace/utils.ts | 65 +- 14 files changed, 213 insertions(+), 1060 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/.vscode/launch.json b/.vscode/launch.json index 0f5f524c..9edbbf53 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -78,6 +78,22 @@ "internalConsoleOptions": "neverOpen", "protocol": "inspector" }, + { + "type": "node", + "request": "launch", + "name": "Only CLI Trace", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "runtimeArgs": ["--nolazy", "-r", "ts-node/register"], + "args": [ + "--no-timeout", + "${workspaceFolder}/packages/cli/test/commands/trace.test.ts" + ], + "sourceMaps": true, + "cwd": "${workspaceFolder}/packages/cli", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "protocol": "inspector" + }, { "type": "node", "request": "launch", diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index cb380fb8..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,901 +0,0 @@ -## (2019-10-17) - -- chore(all): dep upgrades to latest (#78) ([e9c81d6](https://github.com/tracerbench/tracerbench/commit/e9c81d6)), closes [#78](https://github.com/tracerbench/tracerbench/issues/78) -- chore(all): inc lerna-changelog ([01e9912](https://github.com/tracerbench/tracerbench/commit/01e9912)) -- chore(cli): cleanup scripts ([d4ca02a](https://github.com/tracerbench/tracerbench/commit/d4ca02a)) -- chore(cli): test cleanup ([2ef2e40](https://github.com/tracerbench/tracerbench/commit/2ef2e40)) -- chore(core): bump fix for catalina chrome bug ([dda3aa6](https://github.com/tracerbench/tracerbench/commit/dda3aa6)) -- Update README.md ([1deff5d](https://github.com/tracerbench/tracerbench/commit/1deff5d)) -- v2.2.3 ([b3f4b59](https://github.com/tracerbench/tracerbench/commit/b3f4b59)) -- v2.2.4 ([6b9a9d4](https://github.com/tracerbench/tracerbench/commit/6b9a9d4)) -- v2.3.0 ([828bce9](https://github.com/tracerbench/tracerbench/commit/828bce9)) -- feat(cli): exporting cmds (#79) ([60e8409](https://github.com/tracerbench/tracerbench/commit/60e8409)), closes [#79](https://github.com/tracerbench/tracerbench/issues/79) -- fix(cli): fixes gh issue 77 ([37e3a09](https://github.com/tracerbench/tracerbench/commit/37e3a09)) -- docs(cli): update README & manifest ([5be0f68](https://github.com/tracerbench/tracerbench/commit/5be0f68)) - -## 2.3.0 (2019-10-17) - -- chore(all): dep upgrades to latest (#78) ([e9c81d6](https://github.com/tracerbench/tracerbench/commit/e9c81d6)), closes [#78](https://github.com/tracerbench/tracerbench/issues/78) -- chore(cli): test cleanup ([2ef2e40](https://github.com/tracerbench/tracerbench/commit/2ef2e40)) -- chore(core): bump fix for catalina chrome bug ([dda3aa6](https://github.com/tracerbench/tracerbench/commit/dda3aa6)) -- Update README.md ([1deff5d](https://github.com/tracerbench/tracerbench/commit/1deff5d)) -- v2.2.3 ([b3f4b59](https://github.com/tracerbench/tracerbench/commit/b3f4b59)) -- v2.2.4 ([6b9a9d4](https://github.com/tracerbench/tracerbench/commit/6b9a9d4)) -- v2.3.0 ([828bce9](https://github.com/tracerbench/tracerbench/commit/828bce9)) -- feat(cli): exporting cmds (#79) ([60e8409](https://github.com/tracerbench/tracerbench/commit/60e8409)), closes [#79](https://github.com/tracerbench/tracerbench/issues/79) -- fix(cli): fixes gh issue 77 ([37e3a09](https://github.com/tracerbench/tracerbench/commit/37e3a09)) -- docs(cli): update README & manifest ([5be0f68](https://github.com/tracerbench/tracerbench/commit/5be0f68)) - -## 2.2.2 (2019-10-04) - -- v2.2.2 ([814f4e9](https://github.com/tracerbench/tracerbench/commit/814f4e9)) -- docs(cli): update README & manifest ([729c11e](https://github.com/tracerbench/tracerbench/commit/729c11e)) -- fix: bug with regression threshold ([4e1c0e4](https://github.com/tracerbench/tracerbench/commit/4e1c0e4)) - -## 2.2.1 (2019-09-30) - -- v2.2.1 ([2bbf0a5](https://github.com/tracerbench/tracerbench/commit/2bbf0a5)) -- docs(cli): update README & manifest ([ca69b2b](https://github.com/tracerbench/tracerbench/commit/ca69b2b)) - -## 2.2.0 (2019-09-18) - -- v2.2.0 ([01a2741](https://github.com/tracerbench/tracerbench/commit/01a2741)) -- fix: assert error for compare test ([6c6a47c](https://github.com/tracerbench/tracerbench/commit/6c6a47c)) -- fix: Bug where fidelity and tbResultsFolder not referenced correctly for information output ([87cc255](https://github.com/tracerbench/tracerbench/commit/87cc255)) -- fix: fixing compare cmd to include json return ([ac16f71](https://github.com/tracerbench/tracerbench/commit/ac16f71)) -- fix: trusy is eol. migrating to xenial ([dfbce3a](https://github.com/tracerbench/tracerbench/commit/dfbce3a)) -- chore: bumping test suite deps ([3d98eb3](https://github.com/tracerbench/tracerbench/commit/3d98eb3)) - -## 2.1.0 (2019-08-27) - -- feat(cli/create-archive): Tell user in terminal how many requests responses were captured ([01a494b](https://github.com/tracerbench/tracerbench/commit/01a494b)) -- feat(tracerbench/trace-utils): Accept additional browser arguments ([9bbc4b3](https://github.com/tracerbench/tracerbench/commit/9bbc4b3)) -- Update README.md ([4993cf6](https://github.com/tracerbench/tracerbench/commit/4993cf6)) -- v2.0.3 ([be1248c](https://github.com/tracerbench/tracerbench/commit/be1248c)) -- v2.1.0 ([ff98c3a](https://github.com/tracerbench/tracerbench/commit/ff98c3a)) -- test: fix unit test for log-compare-results ([69c1502](https://github.com/tracerbench/tracerbench/commit/69c1502)) -- test(compare.test): Fixing test that broke because of recent refactor ([1c4f322](https://github.com/tracerbench/tracerbench/commit/1c4f322)) -- refactor: Removing the --json flag as it seems like json is outputted by default ([309b96c](https://github.com/tracerbench/tracerbench/commit/309b96c)) -- refactor: Split out output of stats analysis to sub command of compare ([76b37b4](https://github.com/tracerbench/tracerbench/commit/76b37b4)) -- refactor(log-compare-results): BREAKING CHANGE Changing logCompareResults to have no output ([19172af](https://github.com/tracerbench/tracerbench/commit/19172af)) -- refactor(log-compare-results): Changing the format of the summary section of the terminal output ([ea98d9c](https://github.com/tracerbench/tracerbench/commit/ea98d9c)) -- fix: Fix core test fixture app to specific versions. ([276b729](https://github.com/tracerbench/tracerbench/commit/276b729)) -- fix: Indication of progress for running benchmarks to start at 1 not 0 ([7297d1e](https://github.com/tracerbench/tracerbench/commit/7297d1e)) -- fix(cli): swap descriptions to rank sum test ([b29e14d](https://github.com/tracerbench/tracerbench/commit/b29e14d)) -- fix(hl estimator): Stop gap fix for current HL implementation ([a464b25](https://github.com/tracerbench/tracerbench/commit/a464b25)) -- fix(log-compare-results): Fixing bug where HL difference signs and meanings are revered. Negative di ([31e75f6](https://github.com/tracerbench/tracerbench/commit/31e75f6)) -- feat: Indicate progress for compare command ([953f484](https://github.com/tracerbench/tracerbench/commit/953f484)) -- feat(compare): Adding colors to terminal output messages for "RUNNING A REPORT" ([2b7e97a](https://github.com/tracerbench/tracerbench/commit/2b7e97a)) -- feat(create-consumeable-html): Include Config JSON in last page of report ([d130ac5](https://github.com/tracerbench/tracerbench/commit/d130ac5)) -- feat(log-compare-results): Color the HL difference red or green ([b454537](https://github.com/tracerbench/tracerbench/commit/b454537)) -- feat(table): Match colors with pdf output for control and experiment labels ([0fa1b99](https://github.com/tracerbench/tracerbench/commit/0fa1b99)) -- feat(talee): More coloring tweaks ([8491a52](https://github.com/tracerbench/tracerbench/commit/8491a52)) -- chore: Bump cli version to the one published in npm ([2a710b2](https://github.com/tracerbench/tracerbench/commit/2a710b2)) -- chore: Bump versions in package.json ([7aa4e0e](https://github.com/tracerbench/tracerbench/commit/7aa4e0e)) -- chore: Bumping cli version in package.json ([4df025d](https://github.com/tracerbench/tracerbench/commit/4df025d)) -- chore: Bumping version to match published npm version ([50aa271](https://github.com/tracerbench/tracerbench/commit/50aa271)) -- docs(cli): update README ([efda964](https://github.com/tracerbench/tracerbench/commit/efda964)) - -## 2.0.2 (2019-07-22) - -- Update NOISE_MITIGATION.md ([b586d96](https://github.com/tracerbench/tracerbench/commit/b586d96)) -- v2.0.2 ([110a0ef](https://github.com/tracerbench/tracerbench/commit/110a0ef)) -- docs(cli): update README with cmd flags ([f26cab0](https://github.com/tracerbench/tracerbench/commit/f26cab0)) -- style(cumulative chart): Making borders thinner and removing points ([256b595](https://github.com/tracerbench/tracerbench/commit/256b595)) -- style(report html): Adding titles for sub phases detail and spacing. Removerd alert banners and usin ([8f724c6](https://github.com/tracerbench/tracerbench/commit/8f724c6)) -- style(report html): Text align right for TracerBench logo ([0e121dc](https://github.com/tracerbench/tracerbench/commit/0e121dc)) -- feat(cli): fidelity accepts an int, bump high 50 ([777a4f5](https://github.com/tracerbench/tracerbench/commit/777a4f5)) -- feat(report html): Add cumulative chart ([8ffa38b](https://github.com/tracerbench/tracerbench/commit/8ffa38b)) -- feat(report html): Add TracerBench vertical logo ([8e5d839](https://github.com/tracerbench/tracerbench/commit/8e5d839)) -- feat(report html): Avoid page break for phase detail container ([88385cc](https://github.com/tracerbench/tracerbench/commit/88385cc)) -- feat(report html): Sort phases by major difference of slow at the top ([175e6e4](https://github.com/tracerbench/tracerbench/commit/175e6e4)) -- fix(cli): removing pval for now ([53d4ccf](https://github.com/tracerbench/tracerbench/commit/53d4ccf)) -- fix(create-consumable-html): Read in config object, not path ([764c354](https://github.com/tracerbench/tracerbench/commit/764c354)) -- fix(report html): Fixing stats primer link ([faeeb82](https://github.com/tracerbench/tracerbench/commit/faeeb82)) -- fix(report html): Sharpen charts for print ([2aef5c6](https://github.com/tracerbench/tracerbench/commit/2aef5c6)) -- test(create-consumable-html): Fixing unit test to account for label change ([764e722](https://github.com/tracerbench/tracerbench/commit/764e722)) -- refactor(cli): bumps delay to 200 and runtimeStats ([425439e](https://github.com/tracerbench/tracerbench/commit/425439e)) -- refactor(report html): Combining summary text into one paragraph ([328ae54](https://github.com/tracerbench/tracerbench/commit/328ae54)) -- refactor(report html): Removed "mark" label, prefix control and experiment, bolding numbers ([b3b46df](https://github.com/tracerbench/tracerbench/commit/b3b46df)) -- chore(cli): pinning devtool-protocol ([4556cd5](https://github.com/tracerbench/tracerbench/commit/4556cd5)) - -## 2.0.1 (2019-07-11) - -- Update README.md ([81a3f18](https://github.com/tracerbench/tracerbench/commit/81a3f18)) -- Update README.md ([1aa2c69](https://github.com/tracerbench/tracerbench/commit/1aa2c69)) -- Update README.md ([0c7f752](https://github.com/tracerbench/tracerbench/commit/0c7f752)) -- Update README.md ([d831185](https://github.com/tracerbench/tracerbench/commit/d831185)) -- Update README.md ([193c73a](https://github.com/tracerbench/tracerbench/commit/193c73a)) -- Update README.md ([4693615](https://github.com/tracerbench/tracerbench/commit/4693615)) -- Update README.md ([e6d1ce8](https://github.com/tracerbench/tracerbench/commit/e6d1ce8)) -- v2.0.0 ([17525d1](https://github.com/tracerbench/tracerbench/commit/17525d1)) -- v2.0.0-beta.28 ([97ddfa4](https://github.com/tracerbench/tracerbench/commit/97ddfa4)) -- v2.0.1 ([a4793c4](https://github.com/tracerbench/tracerbench/commit/a4793c4)) -- fix: relative paths ([00ef75d](https://github.com/tracerbench/tracerbench/commit/00ef75d)) -- fix: remove unnecessary yarn.lock ([e7d0cc0](https://github.com/tracerbench/tracerbench/commit/e7d0cc0)) -- fix: save traces ([5d84fed](https://github.com/tracerbench/tracerbench/commit/5d84fed)) -- fix: yarn test and prepack shouldn't happen from prepare ([b22b39f](https://github.com/tracerbench/tracerbench/commit/b22b39f)) -- fix(cli): report chromeExecutablePath fix ([5ac8eff](https://github.com/tracerbench/tracerbench/commit/5ac8eff)) -- fix(create-archive): Create tbResultsFolder if missing ([85b05c5](https://github.com/tracerbench/tracerbench/commit/85b05c5)) -- chore: update deps ([7d34c20](https://github.com/tracerbench/tracerbench/commit/7d34c20)) -- chore(deps): bump lodash from 4.17.11 to 4.17.14 ([06ce50d](https://github.com/tracerbench/tracerbench/commit/06ce50d)) -- chore(deps): bump lodash.template from 4.4.0 to 4.5.0 ([421ca3c](https://github.com/tracerbench/tracerbench/commit/421ca3c)) -- feat(pdf): New printToPDF function leveraging chrome-debugging-client to wait until page loads to ge ([9c5db54](https://github.com/tracerbench/tracerbench/commit/9c5db54)) -- docs(cli): updated desc for config flag ([e49992e](https://github.com/tracerbench/tracerbench/commit/e49992e)) - -## 2.0.0-beta.27 (2019-06-30) - -- BREAKING CHANGE(tracerbench-cli): Rename to tracerbench ([bd342ea](https://github.com/tracerbench/tracerbench/commit/bd342ea)) -- BREAKING CHANGE(tracerbench): Rename to @tracerbench/core ([124bd8d](https://github.com/tracerbench/tracerbench/commit/124bd8d)) -- v2.0.0-beta.27 ([fb3c767](https://github.com/tracerbench/tracerbench/commit/fb3c767)) -- chore(cli): removing unused fn ([138fec4](https://github.com/tracerbench/tracerbench/commit/138fec4)) -- fix(cli): merge conflicts ([aea2a48](https://github.com/tracerbench/tracerbench/commit/aea2a48)) -- fix(cli): report template to use ci from Stats ([4c07dde](https://github.com/tracerbench/tracerbench/commit/4c07dde)) -- fix(cli): socksPorts bug ([b31bca7](https://github.com/tracerbench/tracerbench/commit/b31bca7)) -- refactor(cli): base_tbconfig ([ba47766](https://github.com/tracerbench/tracerbench/commit/ba47766)) -- refactor(cli): handles dir and file path ([8ab7ed2](https://github.com/tracerbench/tracerbench/commit/8ab7ed2)) -- refactor(cli): parses rel config to abs ([ff667f3](https://github.com/tracerbench/tracerbench/commit/ff667f3)) -- refactor(cli): parses rel config to abs ([7c815c3](https://github.com/tracerbench/tracerbench/commit/7c815c3)) -- refactor(cli): updating tests ([b3f1bdc](https://github.com/tracerbench/tracerbench/commit/b3f1bdc)) -- refactor(pdf): inc legend, samples, custom labels ([8687412](https://github.com/tracerbench/tracerbench/commit/8687412)) -- feat(cli): compare --report flag ([644f01e](https://github.com/tracerbench/tracerbench/commit/644f01e)) -- feat(cli): tbconfig inheritance ([e40bc2b](https://github.com/tracerbench/tracerbench/commit/e40bc2b)) -- docs(cli): readme inc config ([3bf6657](https://github.com/tracerbench/tracerbench/commit/3bf6657)) - -## 2.0.0-beta.26 (2019-06-27) - -- v2.0.0-beta.26 ([21ea5de](https://github.com/tracerbench/tracerbench/commit/21ea5de)) -- chore(tracerbench): bumping chrome-debug to latest patch ([3affa0b](https://github.com/tracerbench/tracerbench/commit/3affa0b)) -- test(cli): running relevant cmds with explict headless ([a17e735](https://github.com/tracerbench/tracerbench/commit/a17e735)) - -## 2.0.0-beta.25 (2019-06-27) - -- v2.0.0-beta.25 ([16e5700](https://github.com/tracerbench/tracerbench/commit/16e5700)) -- chore(cli): removing unused deps ([5ee839a](https://github.com/tracerbench/tracerbench/commit/5ee839a)) -- chore(cli): removing unused scripts ([f3119bb](https://github.com/tracerbench/tracerbench/commit/f3119bb)) -- chore(cli): splitting up d3 dep ([faf8b87](https://github.com/tracerbench/tracerbench/commit/faf8b87)) -- test(cli): bumping mocha timeout and test fidelity setting ([a190239](https://github.com/tracerbench/tracerbench/commit/a190239)) - -## 2.0.0-beta.24 (2019-06-26) - -- v2.0.0-beta.24 ([9e89b28](https://github.com/tracerbench/tracerbench/commit/9e89b28)) -- test(cli): compare fidelity from med to low ([e013906](https://github.com/tracerbench/tracerbench/commit/e013906)) -- feat(cli): allowing for higher sample sizes ([ab9eef5](https://github.com/tracerbench/tracerbench/commit/ab9eef5)) -- feat(cli): compare with debug flag creates config artifacts ([fd9e006](https://github.com/tracerbench/tracerbench/commit/fd9e006)) - -## 2.0.0-beta.23 (2019-06-26) - -- Update NOISE_MITIGATION.md ([fecacd1](https://github.com/tracerbench/tracerbench/commit/fecacd1)) -- Update README.md ([27dadd6](https://github.com/tracerbench/tracerbench/commit/27dadd6)) -- v2.0.0-beta.23 ([047c82f](https://github.com/tracerbench/tracerbench/commit/047c82f)) -- test(cli): stat on regression ([0cc811f](https://github.com/tracerbench/tracerbench/commit/0cc811f)) -- refactor(cli): compare stdout inc pval and msg updates ([2ab9732](https://github.com/tracerbench/tracerbench/commit/2ab9732)) -- feat(cli): compare cmd added --headless flag ([de53e1a](https://github.com/tracerbench/tracerbench/commit/de53e1a)) - -## 2.0.0-beta.22 (2019-06-25) - -- Update NOISE_MITIGATION.md ([cd91fe4](https://github.com/tracerbench/tracerbench/commit/cd91fe4)) -- Update NOISE_MITIGATION.md ([9fcc69d](https://github.com/tracerbench/tracerbench/commit/9fcc69d)) -- v2.0.0-beta.20 ([8b472a7](https://github.com/tracerbench/tracerbench/commit/8b472a7)) -- v2.0.0-beta.21 ([a5fad3c](https://github.com/tracerbench/tracerbench/commit/a5fad3c)) -- v2.0.0-beta.22 ([3cb5859](https://github.com/tracerbench/tracerbench/commit/3cb5859)) -- fix(cli): exporting static files ([2f4340f](https://github.com/tracerbench/tracerbench/commit/2f4340f)) -- fix(cli): exporting static files pathing ([84b3118](https://github.com/tracerbench/tracerbench/commit/84b3118)) -- fix(cli): IHARServer to include har type ([0cca3d6](https://github.com/tracerbench/tracerbench/commit/0cca3d6)) -- fix(cli): performance timing interface dep ([5806763](https://github.com/tracerbench/tracerbench/commit/5806763)) -- feat(cli): exporting IHARServer ([f36b8a6](https://github.com/tracerbench/tracerbench/commit/f36b8a6)) -- chore(cli): tbconfig with latest browserArgs ([23bb60c](https://github.com/tracerbench/tracerbench/commit/23bb60c)) - -## 2.0.0-beta.19 (2019-06-24) - -- v2.0.0-beta.19 ([9064853](https://github.com/tracerbench/tracerbench/commit/9064853)) -- fix(cli): fixed stats test ([4650e61](https://github.com/tracerbench/tracerbench/commit/4650e61)) -- fix(cli): handlebars helper to conver dasherized to camel ([6cff229](https://github.com/tracerbench/tracerbench/commit/6cff229)) -- fix(cli): inlines static assets and fixes charts not rendering ([f671843](https://github.com/tracerbench/tracerbench/commit/f671843)) -- feat(cli): inc ability for har server in tbconfig ([e8995b4](https://github.com/tracerbench/tracerbench/commit/e8995b4)) -- chore(cli): removing legacy R plot scripts ([562d9fb](https://github.com/tracerbench/tracerbench/commit/562d9fb)) -- chore(tracerbench): bumped to lerna latest ([d2a75c5](https://github.com/tracerbench/tracerbench/commit/d2a75c5)) - -## 2.0.0-beta.18 (2019-06-23) - -- Add files via upload ([1354eaf](https://github.com/tracerbench/tracerbench/commit/1354eaf)) -- Add files via upload ([a16195b](https://github.com/tracerbench/tracerbench/commit/a16195b)) -- Add files via upload ([2df0e67](https://github.com/tracerbench/tracerbench/commit/2df0e67)) -- Add files via upload ([20656af](https://github.com/tracerbench/tracerbench/commit/20656af)) -- Add files via upload ([b0affdf](https://github.com/tracerbench/tracerbench/commit/b0affdf)) -- Add files via upload ([8be6b65](https://github.com/tracerbench/tracerbench/commit/8be6b65)) -- Refactor emulationDevice Flag and Added emulateDeviceOrientation ([ac96f53](https://github.com/tracerbench/tracerbench/commit/ac96f53)) -- Update README.md ([8f6ebfc](https://github.com/tracerbench/tracerbench/commit/8f6ebfc)) -- Update README.md ([cb5268d](https://github.com/tracerbench/tracerbench/commit/cb5268d)) -- Update README.md ([32ba42e](https://github.com/tracerbench/tracerbench/commit/32ba42e)) -- Update README.md ([d4ad39b](https://github.com/tracerbench/tracerbench/commit/d4ad39b)) -- Update README.md ([a957ea2](https://github.com/tracerbench/tracerbench/commit/a957ea2)) -- Update README.md ([810f77d](https://github.com/tracerbench/tracerbench/commit/810f77d)) -- Update README.md ([9fc9115](https://github.com/tracerbench/tracerbench/commit/9fc9115)) -- Update README.md ([bf74cbe](https://github.com/tracerbench/tracerbench/commit/bf74cbe)) -- Update README.md ([66a9f3e](https://github.com/tracerbench/tracerbench/commit/66a9f3e)) -- Update README.md ([52bd789](https://github.com/tracerbench/tracerbench/commit/52bd789)) -- Update README.md ([a404f3f](https://github.com/tracerbench/tracerbench/commit/a404f3f)) -- Update README.md ([1da61e3](https://github.com/tracerbench/tracerbench/commit/1da61e3)) -- Update README.md ([bf4f583](https://github.com/tracerbench/tracerbench/commit/bf4f583)) -- Update README.md ([066ee0d](https://github.com/tracerbench/tracerbench/commit/066ee0d)) -- v2.0.0-beta.18 ([8c6e501](https://github.com/tracerbench/tracerbench/commit/8c6e501)) -- feat(cli): leverage new findChrome from chrome-debug ([1a218c0](https://github.com/tracerbench/tracerbench/commit/1a218c0)) -- feat(cli): new stdout report ([6b24213](https://github.com/tracerbench/tracerbench/commit/6b24213)) -- feat(cli): ora spinner during tracing ([693f18c](https://github.com/tracerbench/tracerbench/commit/693f18c)) -- feat(cli): report to use execa ([9736ba6](https://github.com/tracerbench/tracerbench/commit/9736ba6)) -- feat(config.json): add ability to override control and experiment benchmark environments ([13b0418](https://github.com/tracerbench/tracerbench/commit/13b0418)) -- feat(report): Adding report command to generate pdf output of json results ([84ed4c8](https://github.com/tracerbench/tracerbench/commit/84ed4c8)) -- feat(tbConfig): Enable extending another config via "extends" string attribute in config ([46b2704](https://github.com/tracerbench/tracerbench/commit/46b2704)) -- test(cli): report check artifact html/pdf exist in test ([631042b](https://github.com/tracerbench/tracerbench/commit/631042b)) -- test(confidence-interval): Fixing filename for CI test ([d9246c7](https://github.com/tracerbench/tracerbench/commit/d9246c7)) -- test(report): Fixing unit test for report command removing extra param ([c586241](https://github.com/tracerbench/tracerbench/commit/c586241)) -- fix(cli): compare command networkConditions TS issue ([c0741ed](https://github.com/tracerbench/tracerbench/commit/c0741ed)) -- fix(cli): update yarn scripts to run lint on test and build ([5181ec5](https://github.com/tracerbench/tracerbench/commit/5181ec5)) -- fix(confidence-interval): Fixed negative number sorting ([2baab2c](https://github.com/tracerbench/tracerbench/commit/2baab2c)) -- fix(report): Modified helper links to include stats primer and Wilcoxon signed rank test wiki ([4ceaa43](https://github.com/tracerbench/tracerbench/commit/4ceaa43)) -- fix(report): use url.pathToFileURL for generate path to html file ([2e225e5](https://github.com/tracerbench/tracerbench/commit/2e225e5)) -- refactor(cli): bump to node 10 and added test-helpers ([91c5714](https://github.com/tracerbench/tracerbench/commit/91c5714)) -- refactor(report): delete input file path as a param and hardcoding to be compare.json concat with tb ([6be1880](https://github.com/tracerbench/tracerbench/commit/6be1880)) -- refactor(tracerbench): chrome debugger major. ([6b7de3d](https://github.com/tracerbench/tracerbench/commit/6b7de3d)) -- docs: update "motivation" section ([1960e62](https://github.com/tracerbench/tracerbench/commit/1960e62)) -- docs: update first paragraph of readme ([f9a53a4](https://github.com/tracerbench/tracerbench/commit/f9a53a4)) -- docs(cli): update README with command flag updates and new defaults ([1e314a5](https://github.com/tracerbench/tracerbench/commit/1e314a5)) -- cli: refactor compare stdout ([94cea96](https://github.com/tracerbench/tracerbench/commit/94cea96)) - -## 2.0.0-beta.17 (2019-06-07) - -- v2.0.0-beta.16 ([19e3fe3](https://github.com/tracerbench/tracerbench/commit/19e3fe3)) -- v2.0.0-beta.17 ([28bb6c9](https://github.com/tracerbench/tracerbench/commit/28bb6c9)) -- cli: export static and helper methods and types ([0c34418](https://github.com/tracerbench/tracerbench/commit/0c34418)) -- cli: readme ([628962c](https://github.com/tracerbench/tracerbench/commit/628962c)) - -## 2.0.0-beta.16 (2019-06-07) - -- Add files via upload ([330585f](https://github.com/tracerbench/tracerbench/commit/330585f)) -- Create travis-example.js ([8f61021](https://github.com/tracerbench/tracerbench/commit/8f61021)) -- Renaming tbResultsFile -> tbResultsFolder ([24b1b4f](https://github.com/tracerbench/tracerbench/commit/24b1b4f)) -- Update README.md ([fe2f701](https://github.com/tracerbench/tracerbench/commit/fe2f701)) -- Update README.md ([9c6bbce](https://github.com/tracerbench/tracerbench/commit/9c6bbce)) -- Update README.md ([931402a](https://github.com/tracerbench/tracerbench/commit/931402a)) -- Update travis-example.js ([57b1053](https://github.com/tracerbench/tracerbench/commit/57b1053)) -- v2.0.0-beta.16 ([7510828](https://github.com/tracerbench/tracerbench/commit/7510828)) -- cli: include travis example ([60ae34e](https://github.com/tracerbench/tracerbench/commit/60ae34e)) -- fix: missing types in published node module ([8f93636](https://github.com/tracerbench/tracerbench/commit/8f93636)) - -## 2.0.0-beta.15 (2019-06-05) - -- Add files via upload ([8137097](https://github.com/tracerbench/tracerbench/commit/8137097)) -- har-remix: export types ([b838403](https://github.com/tracerbench/tracerbench/commit/b838403)) -- Update NOISE_MITIGATION.md ([dac70ec](https://github.com/tracerbench/tracerbench/commit/dac70ec)) -- Update README.md ([e464c93](https://github.com/tracerbench/tracerbench/commit/e464c93)) -- Update README.md ([fb8978b](https://github.com/tracerbench/tracerbench/commit/fb8978b)) -- Update README.md ([88329ab](https://github.com/tracerbench/tracerbench/commit/88329ab)) -- Update README.md ([ece0ad1](https://github.com/tracerbench/tracerbench/commit/ece0ad1)) -- Update README.md ([f7e3dbf](https://github.com/tracerbench/tracerbench/commit/f7e3dbf)) -- Update README.md ([4a1ea03](https://github.com/tracerbench/tracerbench/commit/4a1ea03)) -- Update README.md ([8533fba](https://github.com/tracerbench/tracerbench/commit/8533fba)) -- Update README.md ([9b64b0c](https://github.com/tracerbench/tracerbench/commit/9b64b0c)) -- Update README.md ([564d8ea](https://github.com/tracerbench/tracerbench/commit/564d8ea)) -- Update README.md ([c6f4120](https://github.com/tracerbench/tracerbench/commit/c6f4120)) -- Update README.md ([a37b5a4](https://github.com/tracerbench/tracerbench/commit/a37b5a4)) -- Update README.md ([63fb802](https://github.com/tracerbench/tracerbench/commit/63fb802)) -- Update tbconfig.json ([2dfe218](https://github.com/tracerbench/tracerbench/commit/2dfe218)) -- Update utils.test.ts ([f0a1033](https://github.com/tracerbench/tracerbench/commit/f0a1033)) -- v2.0.0-beta.15 ([57b0ca4](https://github.com/tracerbench/tracerbench/commit/57b0ca4)) -- tracerbench: docs ([2d4b2b7](https://github.com/tracerbench/tracerbench/commit/2d4b2b7)) -- cli: compare throw on file not found ([0b816f5](https://github.com/tracerbench/tracerbench/commit/0b816f5)) -- cli: inc json5 and alt tbconfig path ([64ba481](https://github.com/tracerbench/tracerbench/commit/64ba481)) - -## 2.0.0-beta.14 (2019-05-22) - -- v2.0.0-beta.14 ([f4c3233](https://github.com/tracerbench/tracerbench/commit/f4c3233)) -- cli: stringify compare results stdout ([39750ef](https://github.com/tracerbench/tracerbench/commit/39750ef)) - -## 2.0.0-beta.13 (2019-05-22) - -- Update tb-schema.json ([e994454](https://github.com/tracerbench/tracerbench/commit/e994454)) -- v2.0.0-beta.13 ([832d6d9](https://github.com/tracerbench/tracerbench/commit/832d6d9)) -- cli: added additional browserArgs ([9c52298](https://github.com/tracerbench/tracerbench/commit/9c52298)) -- cli: added regressionThreshold flag ([8f983d7](https://github.com/tracerbench/tracerbench/commit/8f983d7)) - -## 2.0.0-beta.12 (2019-05-15) - -- Update stats.ts ([76f1ba0](https://github.com/tracerbench/tracerbench/commit/76f1ba0)) -- v2.0.0-beta.11 ([beae11f](https://github.com/tracerbench/tracerbench/commit/beae11f)) -- v2.0.0-beta.12 ([5bc6808](https://github.com/tracerbench/tracerbench/commit/5bc6808)) -- cli: fix bug with compare cpuThrottleRate ([4c60205](https://github.com/tracerbench/tracerbench/commit/4c60205)) - -## 2.0.0-beta.11 (2019-05-15) - -- Create NOISE_MITIGATION.md ([7896325](https://github.com/tracerbench/tracerbench/commit/7896325)) -- Update NOISE_MITIGATION.md ([c629df0](https://github.com/tracerbench/tracerbench/commit/c629df0)) -- Update README.md ([6f05033](https://github.com/tracerbench/tracerbench/commit/6f05033)) -- v2.0.0-beta.10 ([e09fd42](https://github.com/tracerbench/tracerbench/commit/e09fd42)) -- v2.0.0-beta.11 ([1dc0474](https://github.com/tracerbench/tracerbench/commit/1dc0474)) -- cli: default browser args with ignore cert errors ([c8a55e6](https://github.com/tracerbench/tracerbench/commit/c8a55e6)) -- cli: log compare results using marker label ([ad80391](https://github.com/tracerbench/tracerbench/commit/ad80391)) - -## 2.0.0-beta.10 (2019-05-13) - -- v2.0.0-beta.10 ([2c69ea7](https://github.com/tracerbench/tracerbench/commit/2c69ea7)) -- v2.0.0-beta.9 ([571f979](https://github.com/tracerbench/tracerbench/commit/571f979)) -- cli: add tslint no-console rule to flags.ts ([f88370a](https://github.com/tracerbench/tracerbench/commit/f88370a)) -- cli: added compare flag to support socks proxy ports ([bf94419](https://github.com/tracerbench/tracerbench/commit/bf94419)) -- cli: tmp added R scripts to tb-cli bin for test analysis ([39e1a1a](https://github.com/tracerbench/tracerbench/commit/39e1a1a)) - -## 2.0.0-beta.8 (2019-05-10) - -- v2.0.0-beta.8 ([c2c0c99](https://github.com/tracerbench/tracerbench/commit/c2c0c99)) -- cli: fixes bug with simulateDeviceOptions ([d93b3a5](https://github.com/tracerbench/tracerbench/commit/d93b3a5)) - -## 2.0.0-beta.7 (2019-05-10) - -- emulate mobile device feature ([74215c5](https://github.com/tracerbench/tracerbench/commit/74215c5)) -- v2.0.0-beta.7 ([11a24e5](https://github.com/tracerbench/tracerbench/commit/11a24e5)) -- yarn lock ([5264468](https://github.com/tracerbench/tracerbench/commit/5264468)) -- cli: added husky pre-push to run prepack ([34dbd8e](https://github.com/tracerbench/tracerbench/commit/34dbd8e)) -- cli: additional rank sum tests ([8024530](https://github.com/tracerbench/tracerbench/commit/8024530)) -- cli: cleanup trace stdout & file out. tb: hartrace stdout to dir ([f9fc0f8](https://github.com/tracerbench/tracerbench/commit/f9fc0f8)) -- cli: compare test from tb-config ([511cb69](https://github.com/tracerbench/tracerbench/commit/511cb69)) -- cli: compare with logging and debug ([298631d](https://github.com/tracerbench/tracerbench/commit/298631d)) -- cli: default with browserArgs to disable bg timer throttling ([5ec76b4](https://github.com/tracerbench/tracerbench/commit/5ec76b4)) -- cli: emulate device added test and handled case for default and tbconfig ([470eb16](https://github.com/tracerbench/tracerbench/commit/470eb16)) -- cli: known regression test. rank-sum a/a test ([3bb2f28](https://github.com/tracerbench/tracerbench/commit/3bb2f28)) -- cli: log compare results test and compare json out ([4dfcb39](https://github.com/tracerbench/tracerbench/commit/4dfcb39)) -- cli: log default values when no tb-config is found ([fadb410](https://github.com/tracerbench/tracerbench/commit/fadb410)) -- cli: merge commands into trace ([1d5e0a5](https://github.com/tracerbench/tracerbench/commit/1d5e0a5)) -- cli: optimize trace commands ([6f6fe93](https://github.com/tracerbench/tracerbench/commit/6f6fe93)) -- cli: refactor trace commands. added tests. ([5448e54](https://github.com/tracerbench/tracerbench/commit/5448e54)) -- cli: stats tests ([86c0fe4](https://github.com/tracerbench/tracerbench/commit/86c0fe4)) -- cli: stats tests ([edb3a70](https://github.com/tracerbench/tracerbench/commit/edb3a70)) -- cli: stats tests with smaller samples ([8001938](https://github.com/tracerbench/tracerbench/commit/8001938)) -- cli: tb-config schema ([521a931](https://github.com/tracerbench/tracerbench/commit/521a931)) -- tb: moved husky to the root ([faf3811](https://github.com/tracerbench/tracerbench/commit/faf3811)) -- tb: moved husky to the root ([f402355](https://github.com/tracerbench/tracerbench/commit/f402355)) -- tb: silent reporter. hartrace output to dir ([1741b73](https://github.com/tracerbench/tracerbench/commit/1741b73)) - -## 2.0.0-beta.6 (2019-04-19) - -- cli dep: removing wilson ([2882040](https://github.com/tracerbench/tracerbench/commit/2882040)) -- cli flag desc ([06a4b26](https://github.com/tracerbench/tracerbench/commit/06a4b26)) -- make linting consistent between projects ([52d400d](https://github.com/tracerbench/tracerbench/commit/52d400d)) -- out dist ([e440a4f](https://github.com/tracerbench/tracerbench/commit/e440a4f)) -- out dist ([31ca970](https://github.com/tracerbench/tracerbench/commit/31ca970)) -- remove wilson. consume latest tb ([29b6f58](https://github.com/tracerbench/tracerbench/commit/29b6f58)) -- Separate out types in har-remix. ([4b76df5](https://github.com/tracerbench/tracerbench/commit/4b76df5)) -- Update README.md ([f0b1cee](https://github.com/tracerbench/tracerbench/commit/f0b1cee)) -- v2.0.0-beta.3 ([85c8d59](https://github.com/tracerbench/tracerbench/commit/85c8d59)) -- v2.0.0-beta.4 ([1dda483](https://github.com/tracerbench/tracerbench/commit/1dda483)) -- v2.0.0-beta.5 ([a0d475a](https://github.com/tracerbench/tracerbench/commit/a0d475a)) -- v2.0.0-beta.6 ([02fc6bb](https://github.com/tracerbench/tracerbench/commit/02fc6bb)) -- cli: comments and desc updates ([cab41c8](https://github.com/tracerbench/tracerbench/commit/cab41c8)) -- cli: distribution sparkline stdout ([435d16b](https://github.com/tracerbench/tracerbench/commit/435d16b)) -- cli: inline doc ([d201866](https://github.com/tracerbench/tracerbench/commit/d201866)) -- cli: playing with histogram stdout ([dac08bc](https://github.com/tracerbench/tracerbench/commit/dac08bc)) -- cli: refactor flag defaults ([3ef3362](https://github.com/tracerbench/tracerbench/commit/3ef3362)) -- cli: refactor markers, network ([c9b4a54](https://github.com/tracerbench/tracerbench/commit/c9b4a54)) -- cli: refactor output compare results table ([3a9fafd](https://github.com/tracerbench/tracerbench/commit/3a9fafd)) -- cli: replace mann-whitney with wilcoxon ([357df31](https://github.com/tracerbench/tracerbench/commit/357df31)) -- cli: table class. new format ([780b079](https://github.com/tracerbench/tracerbench/commit/780b079)) -- cli: table format ([15ca7ad](https://github.com/tracerbench/tracerbench/commit/15ca7ad)) -- cli: wilcoxon rank sum ([b33cb17](https://github.com/tracerbench/tracerbench/commit/b33cb17)) -- cli: wilcoxon signed rank test ([2b96f01](https://github.com/tracerbench/tracerbench/commit/2b96f01)) -- cli: wilcoxon signed rank tests ([5aeb6a7](https://github.com/tracerbench/tracerbench/commit/5aeb6a7)) - -## 2.0.0-beta.3 (2019-04-01) - -- prep 2.0.0-beta.3 lockstep ([d974d7c](https://github.com/tracerbench/tracerbench/commit/d974d7c)) -- v1.0.0 ([f696c6d](https://github.com/tracerbench/tracerbench/commit/f696c6d)) -- v1.0.0 ([072bd4a](https://github.com/tracerbench/tracerbench/commit/072bd4a)) -- v1.0.0-alpha.11 ([5271300](https://github.com/tracerbench/tracerbench/commit/5271300)) -- v2.0.0-beta.3 ([95ab528](https://github.com/tracerbench/tracerbench/commit/95ab528)) - -## 1.0.0-alpha.11 (2019-04-01) - -- align shared deps with cli ([d425d8b](https://github.com/tracerbench/tracerbench/commit/d425d8b)) -- cli cleanup compare stdout ([601d20f](https://github.com/tracerbench/tracerbench/commit/601d20f)) -- cli compare. split out results. inc variance ([193ad74](https://github.com/tracerbench/tracerbench/commit/193ad74)) -- cli compare. test setup for A/B ([ce09eb8](https://github.com/tracerbench/tracerbench/commit/ce09eb8)) -- cli flag cleanup ([88e4540](https://github.com/tracerbench/tracerbench/commit/88e4540)) -- cli stat logic and display ([028b91c](https://github.com/tracerbench/tracerbench/commit/028b91c)) -- cli test setup ([b04db86](https://github.com/tracerbench/tracerbench/commit/b04db86)) -- cli update fixtures ([6e91116](https://github.com/tracerbench/tracerbench/commit/6e91116)) -- cli updated compare with control and exp urls ([c83fa7a](https://github.com/tracerbench/tracerbench/commit/c83fa7a)) -- consume tb sibling ([1b0a908](https://github.com/tracerbench/tracerbench/commit/1b0a908)) -- green. pp migrated ([939974e](https://github.com/tracerbench/tracerbench/commit/939974e)) -- ignore test for now ([7fb85d1](https://github.com/tracerbench/tracerbench/commit/7fb85d1)) -- merge har-remix/master ([83f1743](https://github.com/tracerbench/tracerbench/commit/83f1743)) -- migrated all pp src ([211b9e7](https://github.com/tracerbench/tracerbench/commit/211b9e7)) -- pp test gen fix ([470193a](https://github.com/tracerbench/tracerbench/commit/470193a)) -- pp tests migrated ([6c068c4](https://github.com/tracerbench/tracerbench/commit/6c068c4)) -- pp tests migrated all green ([ca1801d](https://github.com/tracerbench/tracerbench/commit/ca1801d)) -- pp tests to tb overlap complete. pre-merge ([4221e91](https://github.com/tracerbench/tracerbench/commit/4221e91)) -- pp to tb overlap complete. pre-merge ([8cea207](https://github.com/tracerbench/tracerbench/commit/8cea207)) -- rerun tests ([0f333e5](https://github.com/tracerbench/tracerbench/commit/0f333e5)) -- tb pp tests and config ([2b23314](https://github.com/tracerbench/tracerbench/commit/2b23314)) -- tb pp tests transpile-only ([18c3de6](https://github.com/tracerbench/tracerbench/commit/18c3de6)) -- test linting fix ([80ee0d0](https://github.com/tracerbench/tracerbench/commit/80ee0d0)) -- tracerbench docs ([b883c2a](https://github.com/tracerbench/tracerbench/commit/b883c2a)) -- tracerbench pp optimize ([2b12637](https://github.com/tracerbench/tracerbench/commit/2b12637)) -- tsconfig ([d085a0d](https://github.com/tracerbench/tracerbench/commit/d085a0d)) -- tsconfig ([a307d1c](https://github.com/tracerbench/tracerbench/commit/a307d1c)) -- tsconfig ([d934532](https://github.com/tracerbench/tracerbench/commit/d934532)) -- tsconfig ([f4da11b](https://github.com/tracerbench/tracerbench/commit/f4da11b)) -- tsconfig ([c34113a](https://github.com/tracerbench/tracerbench/commit/c34113a)) -- tsconfig update ([44e211a](https://github.com/tracerbench/tracerbench/commit/44e211a)) -- tsconfig updates ([f3d2a4d](https://github.com/tracerbench/tracerbench/commit/f3d2a4d)) -- update .gitignore ([9aacb99](https://github.com/tracerbench/tracerbench/commit/9aacb99)) -- Update mann-whitney.ts ([1e31a6c](https://github.com/tracerbench/tracerbench/commit/1e31a6c)) -- Update README.md ([ac15e27](https://github.com/tracerbench/tracerbench/commit/ac15e27)) -- Update README.md ([94c0e02](https://github.com/tracerbench/tracerbench/commit/94c0e02)) -- Update README.md ([c257f8f](https://github.com/tracerbench/tracerbench/commit/c257f8f)) -- Update README.md ([522e5d9](https://github.com/tracerbench/tracerbench/commit/522e5d9)) -- Update README.md ([e4b9012](https://github.com/tracerbench/tracerbench/commit/e4b9012)) -- Update README.md ([4d7fd15](https://github.com/tracerbench/tracerbench/commit/4d7fd15)) -- Update README.md ([36ad8cf](https://github.com/tracerbench/tracerbench/commit/36ad8cf)) -- Update README.md ([a72628c](https://github.com/tracerbench/tracerbench/commit/a72628c)) -- Update README.md ([d8fcaa7](https://github.com/tracerbench/tracerbench/commit/d8fcaa7)) -- Update README.md ([4c6c358](https://github.com/tracerbench/tracerbench/commit/4c6c358)) -- Update README.md ([aae82ec](https://github.com/tracerbench/tracerbench/commit/aae82ec)) -- Update README.md ([f300a16](https://github.com/tracerbench/tracerbench/commit/f300a16)) -- Update README.md ([1bf47cf](https://github.com/tracerbench/tracerbench/commit/1bf47cf)) -- Update README.md ([0fa7498](https://github.com/tracerbench/tracerbench/commit/0fa7498)) -- Update README.md ([88055fb](https://github.com/tracerbench/tracerbench/commit/88055fb)) -- Update README.md ([42cad2c](https://github.com/tracerbench/tracerbench/commit/42cad2c)) -- Update README.md ([e0c2c61](https://github.com/tracerbench/tracerbench/commit/e0c2c61)) -- Update README.md ([66e41ac](https://github.com/tracerbench/tracerbench/commit/66e41ac)) -- Update README.md ([8b38579](https://github.com/tracerbench/tracerbench/commit/8b38579)) -- v1.0.0-alpha.10 ([602bad5](https://github.com/tracerbench/tracerbench/commit/602bad5)) -- v1.0.0-alpha.11 ([f636dd5](https://github.com/tracerbench/tracerbench/commit/f636dd5)) -- yarn lock and removed tmp from dep on cli ([165c24e](https://github.com/tracerbench/tracerbench/commit/165c24e)) -- RED: cli list-func and analyze ([f3b145e](https://github.com/tracerbench/tracerbench/commit/f3b145e)) -- RED: cli list-func and analyze ([d6c2298](https://github.com/tracerbench/tracerbench/commit/d6c2298)) - -## 1.0.0-alpha.9 (2019-03-18) - -- cli compare fidelity update ([5837451](https://github.com/tracerbench/tracerbench/commit/5837451)) -- cli compare format output ([0d3247e](https://github.com/tracerbench/tracerbench/commit/0d3247e)) -- cli compare msg conditional ([3871137](https://github.com/tracerbench/tracerbench/commit/3871137)) -- cli compare update. cli trace iterations ([3354716](https://github.com/tracerbench/tracerbench/commit/3354716)) -- cli docs ([0b699c6](https://github.com/tracerbench/tracerbench/commit/0b699c6)) -- cli docs ([5555183](https://github.com/tracerbench/tracerbench/commit/5555183)) -- compare stats ([ab79b24](https://github.com/tracerbench/tracerbench/commit/ab79b24)) -- compare stats ([a150c70](https://github.com/tracerbench/tracerbench/commit/a150c70)) -- compare stats ([87a2707](https://github.com/tracerbench/tracerbench/commit/87a2707)) -- compare stats ([f5d7734](https://github.com/tracerbench/tracerbench/commit/f5d7734)) -- compare stats ([e410fab](https://github.com/tracerbench/tracerbench/commit/e410fab)) -- export chalkScheme ([b4bfa95](https://github.com/tracerbench/tracerbench/commit/b4bfa95)) -- mann whitney props ([b3d602e](https://github.com/tracerbench/tracerbench/commit/b3d602e)) -- Update README.md ([1d37caa](https://github.com/tracerbench/tracerbench/commit/1d37caa)) -- Update README.md ([8bada11](https://github.com/tracerbench/tracerbench/commit/8bada11)) -- Update README.md ([0c53e94](https://github.com/tracerbench/tracerbench/commit/0c53e94)) -- updated trace output ([8eaffbf](https://github.com/tracerbench/tracerbench/commit/8eaffbf)) -- v1.0.0-alpha.9 ([89adefd](https://github.com/tracerbench/tracerbench/commit/89adefd)) - -## 1.0.0-alpha.8 (2019-03-11) - -- cli compare with test ([7b38f16](https://github.com/tracerbench/tracerbench/commit/7b38f16)) -- inc githead ([19e7fa2](https://github.com/tracerbench/tracerbench/commit/19e7fa2)) -- listr for timeline:find, js-eval ([62895fe](https://github.com/tracerbench/tracerbench/commit/62895fe)) -- v1.0.0-alpha.8 ([e56d07b](https://github.com/tracerbench/tracerbench/commit/e56d07b)) - -## 1.0.0-alpha.7 (2019-03-09) - -- v1.0.0-alpha.7 ([6fe758f](https://github.com/tracerbench/tracerbench/commit/6fe758f)) - -## 1.0.0-alpha.6 (2019-03-09) - -- cli refactor and simplify ([51b03ef](https://github.com/tracerbench/tracerbench/commit/51b03ef)) -- Delete www.tracerbench.com.har ([4b1cb5d](https://github.com/tracerbench/tracerbench/commit/4b1cb5d)) -- v1.0.0-alpha.6 ([0c507f0](https://github.com/tracerbench/tracerbench/commit/0c507f0)) - -## 1.0.0-alpha.5 (2019-03-09) - -- swapping trace.archive for trace.har ([641ca5a](https://github.com/tracerbench/tracerbench/commit/641ca5a)) -- trace prompt har location updated ([5bcdb5a](https://github.com/tracerbench/tracerbench/commit/5bcdb5a)) -- update README ([222a915](https://github.com/tracerbench/tracerbench/commit/222a915)) -- v1.0.0-alpha.5 ([5b9031b](https://github.com/tracerbench/tracerbench/commit/5b9031b)) - -## 1.0.0-alpha.4 (2019-03-08) - -- defaults refactor ([b8a62f1](https://github.com/tracerbench/tracerbench/commit/b8a62f1)) -- Run aggregate on all render nodes (#28) ([9340e37](https://github.com/tracerbench/tracerbench/commit/9340e37)), closes [#28](https://github.com/tracerbench/tracerbench/issues/28) -- v1.0.0-alpha.4 ([7c6f74a](https://github.com/tracerbench/tracerbench/commit/7c6f74a)) - -## 1.0.0-alpha.3 (2019-03-08) - -- default value returns config val or default ([f7ba911](https://github.com/tracerbench/tracerbench/commit/f7ba911)) -- v1.0.0-alpha.3 ([e1353b1](https://github.com/tracerbench/tracerbench/commit/e1353b1)) - -## 1.0.0-alpha.2 (2019-03-08) - -- split out defaultFlagArgs. trace log updates ([3cbb3f1](https://github.com/tracerbench/tracerbench/commit/3cbb3f1)) -- v1.0.0-alpha.2 ([c8dbc4d](https://github.com/tracerbench/tracerbench/commit/c8dbc4d)) - -## 1.0.0-alpha.1 (2019-03-08) - -- cli - trace friendly info message ([884a820](https://github.com/tracerbench/tracerbench/commit/884a820)) -- cli - trace now prompts to record har ([fc8fb97](https://github.com/tracerbench/tracerbench/commit/fc8fb97)) -- pp get cookies from recording session ([e8cca50](https://github.com/tracerbench/tracerbench/commit/e8cca50)) -- tracerbench compare wip ([da398c4](https://github.com/tracerbench/tracerbench/commit/da398c4)) -- Update README.md ([c200e5e](https://github.com/tracerbench/tracerbench/commit/c200e5e)) -- Update README.md ([1b79f02](https://github.com/tracerbench/tracerbench/commit/1b79f02)) -- Update README.md ([100291d](https://github.com/tracerbench/tracerbench/commit/100291d)) -- v1.0.0-alpha.1 ([4e95742](https://github.com/tracerbench/tracerbench/commit/4e95742)) - -## 1.0.0-alpha.0 (2019-03-06) - -- Add module name into exported function slice (#26) ([b808721](https://github.com/tracerbench/tracerbench/commit/b808721)), closes [#26](https://github.com/tracerbench/tracerbench/issues/26) -- Aggregate based on module name ([0a66997](https://github.com/tracerbench/tracerbench/commit/0a66997)) -- analyze command stub ([4a2070a](https://github.com/tracerbench/tracerbench/commit/4a2070a)) -- Archive-Trace: init ported from PP. PP archive-trace cookies optional ([9dbd1df](https://github.com/tracerbench/tracerbench/commit/9dbd1df)) -- automate get cookies. profile-trace green ([b99abca](https://github.com/tracerbench/tracerbench/commit/b99abca)) -- basic cookies gen from har. har options added ([f599b4a](https://github.com/tracerbench/tracerbench/commit/f599b4a)) -- bumping tslint ([fafcf41](https://github.com/tracerbench/tracerbench/commit/fafcf41)) -- cleanup & refactor ([8a4ca5f](https://github.com/tracerbench/tracerbench/commit/8a4ca5f)) -- cleanup & refactor ([30bc779](https://github.com/tracerbench/tracerbench/commit/30bc779)) -- cleanup. compare command init ([eb5e4e6](https://github.com/tracerbench/tracerbench/commit/eb5e4e6)) -- cli .gitignore. scoped trace command artifacts to /test dir ([90a4ba9](https://github.com/tracerbench/tracerbench/commit/90a4ba9)) -- cli compare wip ([26bafc0](https://github.com/tracerbench/tracerbench/commit/26bafc0)) -- cli to lerna ([7c0bb12](https://github.com/tracerbench/tracerbench/commit/7c0bb12)) -- cli to lerna ([0c96169](https://github.com/tracerbench/tracerbench/commit/0c96169)) -- compare spike ([ce371da](https://github.com/tracerbench/tracerbench/commit/ce371da)) -- convert pp to use headless ([1511476](https://github.com/tracerbench/tracerbench/commit/1511476)) -- Delete trace-processed.json ([80da345](https://github.com/tracerbench/tracerbench/commit/80da345)) -- Expand collapsed trace file into a full profile ([3b0e310](https://github.com/tracerbench/tracerbench/commit/3b0e310)) -- exposes declarations ([720e7a3](https://github.com/tracerbench/tracerbench/commit/720e7a3)) -- finished todo: cleanup and refactor analyze ([600bfb5](https://github.com/tracerbench/tracerbench/commit/600bfb5)) -- Fix create-archive cookie behavior ([5a1037f](https://github.com/tracerbench/tracerbench/commit/5a1037f)) -- Fix execute start check ([741a7b5](https://github.com/tracerbench/tracerbench/commit/741a7b5)) -- fixed analyze todo ([4ae0d9e](https://github.com/tracerbench/tracerbench/commit/4ae0d9e)) -- Gets rid of null assertion operator use (#29) ([88df564](https://github.com/tracerbench/tracerbench/commit/88df564)), closes [#29](https://github.com/tracerbench/tracerbench/issues/29) -- imported pp into mono-repo ([6d10978](https://github.com/tracerbench/tracerbench/commit/6d10978)) -- init cli package ([2296e04](https://github.com/tracerbench/tracerbench/commit/2296e04)) -- Insert render events as fake function slice nodes ([bad0d3e](https://github.com/tracerbench/tracerbench/commit/bad0d3e)) -- madge source dep graph ([49c45e9](https://github.com/tracerbench/tracerbench/commit/49c45e9)) -- madge source dep graph ([2d89edf](https://github.com/tracerbench/tracerbench/commit/2d89edf)) -- maintenance. dead code cleanup. ([11f9ad3](https://github.com/tracerbench/tracerbench/commit/11f9ad3)) -- maintenance. dead code cleanup. ([8ce82e8](https://github.com/tracerbench/tracerbench/commit/8ce82e8)) -- migrated css-parse ([a8c3f4d](https://github.com/tracerbench/tracerbench/commit/a8c3f4d)) -- migrated js-eval-time. pp clean-up post migration ([3a08bbe](https://github.com/tracerbench/tracerbench/commit/3a08bbe)) -- migrated list-functions command. pp bin cleanup ([f231753](https://github.com/tracerbench/tracerbench/commit/f231753)) -- migrated timeline ([8282034](https://github.com/tracerbench/tracerbench/commit/8282034)) -- open cli init ([f3f36d9](https://github.com/tracerbench/tracerbench/commit/f3f36d9)) -- pp public ([88f77e2](https://github.com/tracerbench/tracerbench/commit/88f77e2)) -- pp trace ([f0b6cfe](https://github.com/tracerbench/tracerbench/commit/f0b6cfe)) -- Re-enable heuristic support (function/module regexes), while retaining automatic module path aggerga ([6b6667c](https://github.com/tracerbench/tracerbench/commit/6b6667c)) -- refactor and cleanup ([aab898e](https://github.com/tracerbench/tracerbench/commit/aab898e)) -- refactor cli tb-cli config ([88a50da](https://github.com/tracerbench/tracerbench/commit/88a50da)) -- remove dup code cli/pp analyze ([922bb4c](https://github.com/tracerbench/tracerbench/commit/922bb4c)) -- removes uglify from build. handles mojave chromium crash dump error ([e526fe3](https://github.com/tracerbench/tracerbench/commit/e526fe3)) -- Terminate function slices at the end of trace correctly ([d3176c4](https://github.com/tracerbench/tracerbench/commit/d3176c4)) -- timeline tests ([6832c59](https://github.com/tracerbench/tracerbench/commit/6832c59)) -- trace cli ([4bd7c84](https://github.com/tracerbench/tracerbench/commit/4bd7c84)) -- Trace Command: update desc, added rimraf cleanup to traceFile ([fc55b5b](https://github.com/tracerbench/tracerbench/commit/fc55b5b)) -- trace test ([5b2c047](https://github.com/tracerbench/tracerbench/commit/5b2c047)) -- travis to use chrome stable ([6b85cbc](https://github.com/tracerbench/tracerbench/commit/6b85cbc)) -- tweak heuristic vs auto module aggergation logic ([69e3242](https://github.com/tracerbench/tracerbench/commit/69e3242)) -- update cli readme ([d79a54f](https://github.com/tracerbench/tracerbench/commit/d79a54f)) -- Update CONTRIBUTING.md ([6c0985c](https://github.com/tracerbench/tracerbench/commit/6c0985c)) -- Update CONTRIBUTING.md ([d7de1d8](https://github.com/tracerbench/tracerbench/commit/d7de1d8)) -- Update README.md ([e091b96](https://github.com/tracerbench/tracerbench/commit/e091b96)) -- Update README.md ([d71c836](https://github.com/tracerbench/tracerbench/commit/d71c836)) -- Update README.md ([6f05971](https://github.com/tracerbench/tracerbench/commit/6f05971)) -- Update README.md ([7f4fd0e](https://github.com/tracerbench/tracerbench/commit/7f4fd0e)) -- Update README.md ([92c3365](https://github.com/tracerbench/tracerbench/commit/92c3365)) -- utils init ([317cc34](https://github.com/tracerbench/tracerbench/commit/317cc34)) -- v1.0.0-alpha.0 ([393fb28](https://github.com/tracerbench/tracerbench/commit/393fb28)) - -## 0.14.0 (2018-10-30) - -- [bugfix] Links missing script and adds docs ([9de374c](https://github.com/tracerbench/tracerbench/commit/9de374c)) -- Add ability to throttle CPU and Network ([c3b68a5](https://github.com/tracerbench/tracerbench/commit/c3b68a5)) -- Add back heuristics ([60c78c4](https://github.com/tracerbench/tracerbench/commit/60c78c4)) -- Add README ([d3042cf](https://github.com/tracerbench/tracerbench/commit/d3042cf)) -- Add travis ([af25466](https://github.com/tracerbench/tracerbench/commit/af25466)) -- Adding basic test infrastructure ([5902277](https://github.com/tracerbench/tracerbench/commit/5902277)) -- Adding fixturify for testing file system ([d27804b](https://github.com/tracerbench/tracerbench/commit/d27804b)) -- Adding test file per class type on Profile ([04574f5](https://github.com/tracerbench/tracerbench/commit/04574f5)) -- Adding tests ([850cef8](https://github.com/tracerbench/tracerbench/commit/850cef8)) -- Adds a parent `profile` CLI to branch all subcommands off of ([717fb38](https://github.com/tracerbench/tracerbench/commit/717fb38)) -- Adds simple test for the top level cjs module ([d8921ad](https://github.com/tracerbench/tracerbench/commit/d8921ad)) -- Associating meta data to call site ([606e8a2](https://github.com/tracerbench/tracerbench/commit/606e8a2)) -- Categorized map ([48d1f39](https://github.com/tracerbench/tracerbench/commit/48d1f39)) -- Collapse callframes ([3e9fd65](https://github.com/tracerbench/tracerbench/commit/3e9fd65)) -- Converting tests to typescript + mocha/chai ([c8d8c2c](https://github.com/tracerbench/tracerbench/commit/c8d8c2c)) -- core algo works ([1069612](https://github.com/tracerbench/tracerbench/commit/1069612)) -- Create archive ([e71c6f1](https://github.com/tracerbench/tracerbench/commit/e71c6f1)) -- Create CODE_OF_CONDUCT.md ([3350e96](https://github.com/tracerbench/tracerbench/commit/3350e96)) -- Create NOTICE.md ([09387aa](https://github.com/tracerbench/tracerbench/commit/09387aa)) -- Create VULNERABILITY.md ([9dc1d21](https://github.com/tracerbench/tracerbench/commit/9dc1d21)) -- done?? ([0db62aa](https://github.com/tracerbench/tracerbench/commit/0db62aa)) -- Fix list-functions ([eb8a0d2](https://github.com/tracerbench/tracerbench/commit/eb8a0d2)) -- Fix spacing issues and include callsites ([ef889fc](https://github.com/tracerbench/tracerbench/commit/ef889fc)) -- fix test fixture build ember vendor ([c683d14](https://github.com/tracerbench/tracerbench/commit/c683d14)) -- Fix time slicing ([cbc252f](https://github.com/tracerbench/tracerbench/commit/cbc252f)) -- fix travis ([6491f2d](https://github.com/tracerbench/tracerbench/commit/6491f2d)) -- Fuzzy match path expressions ([9f5380c](https://github.com/tracerbench/tracerbench/commit/9f5380c)) -- housekeeping ([f8d6628](https://github.com/tracerbench/tracerbench/commit/f8d6628)) -- improve tests for monorepo ([effa1ab](https://github.com/tracerbench/tracerbench/commit/effa1ab)) -- it works! ([53e170d](https://github.com/tracerbench/tracerbench/commit/53e170d)) -- Key must encorp. loc info ([0d4d74d](https://github.com/tracerbench/tracerbench/commit/0d4d74d)) -- make tests just always use headless ([ed5b53c](https://github.com/tracerbench/tracerbench/commit/ed5b53c)) -- Migrate to using the archive ([0e9e20b](https://github.com/tracerbench/tracerbench/commit/0e9e20b)) -- move to mono repo structure ([2dd8e36](https://github.com/tracerbench/tracerbench/commit/2dd8e36)) -- rebased ([a60706d](https://github.com/tracerbench/tracerbench/commit/a60706d)) -- Rebasing ([aee1094](https://github.com/tracerbench/tracerbench/commit/aee1094)) -- Refactor reporter and aggregation ([302f63d](https://github.com/tracerbench/tracerbench/commit/302f63d)) -- remove bower ([419b491](https://github.com/tracerbench/tracerbench/commit/419b491)) -- remove bower.json ([20b9e76](https://github.com/tracerbench/tracerbench/commit/20b9e76)) -- Removing failing test example ([df94dc6](https://github.com/tracerbench/tracerbench/commit/df94dc6)) -- rename ([976ca6d](https://github.com/tracerbench/tracerbench/commit/976ca6d)) -- Rename stuff ([895e3e1](https://github.com/tracerbench/tracerbench/commit/895e3e1)) -- Renaming some commands ([dce9613](https://github.com/tracerbench/tracerbench/commit/dce9613)) -- Required Legalese. ([8679523](https://github.com/tracerbench/tracerbench/commit/8679523)) -- set the version as the last published tag for browsalyzer name ([e124128](https://github.com/tracerbench/tracerbench/commit/e124128)) -- SITESPEED-2177: Fix network throttling ([a72786b](https://github.com/tracerbench/tracerbench/commit/a72786b)) -- Stabilize heuristics ([bb5b2dd](https://github.com/tracerbench/tracerbench/commit/bb5b2dd)) -- Start fixing the heuristics ([e941ba5](https://github.com/tracerbench/tracerbench/commit/e941ba5)) -- start moving stuff ([f287282](https://github.com/tracerbench/tracerbench/commit/f287282)) -- tslint stuff ([2873955](https://github.com/tracerbench/tracerbench/commit/2873955)) -- update chrome-debugging-client ([d63fae8](https://github.com/tracerbench/tracerbench/commit/d63fae8)) -- update deps ([7baae62](https://github.com/tracerbench/tracerbench/commit/7baae62)) -- Update README.md ([f90a7ec](https://github.com/tracerbench/tracerbench/commit/f90a7ec)) -- Update README.md ([e0f0b26](https://github.com/tracerbench/tracerbench/commit/e0f0b26)) -- Update README.md ([7a72232](https://github.com/tracerbench/tracerbench/commit/7a72232)) -- Update README.md ([2be5fb3](https://github.com/tracerbench/tracerbench/commit/2be5fb3)) -- Update README.md ([e0c6138](https://github.com/tracerbench/tracerbench/commit/e0c6138)) -- update travis file ([a931e31](https://github.com/tracerbench/tracerbench/commit/a931e31)) -- Updating binary to use profile as opposed to parse-profile ([79a23bf](https://github.com/tracerbench/tracerbench/commit/79a23bf)) -- Updating README ([573f7e3](https://github.com/tracerbench/tracerbench/commit/573f7e3)) -- v0.14.0 ([d27b8e5](https://github.com/tracerbench/tracerbench/commit/d27b8e5)) -- wip ([505de09](https://github.com/tracerbench/tracerbench/commit/505de09)) -- wip ([813fa32](https://github.com/tracerbench/tracerbench/commit/813fa32)) -- wip ([60f2504](https://github.com/tracerbench/tracerbench/commit/60f2504)) -- WIP ([2e10e16](https://github.com/tracerbench/tracerbench/commit/2e10e16)) -- WIP ([b800b2f](https://github.com/tracerbench/tracerbench/commit/b800b2f)) -- WIP ([fe835ed](https://github.com/tracerbench/tracerbench/commit/fe835ed)) -- WIP formating ([2cbc12e](https://github.com/tracerbench/tracerbench/commit/2cbc12e)) - -## 0.13.1 (2018-04-15) - -- automate trace ([76de02f](https://github.com/tracerbench/tracerbench/commit/76de02f)) -- cleanup and lint ([3c0a8a3](https://github.com/tracerbench/tracerbench/commit/3c0a8a3)) -- Convert streaming profile to cpuprofile. ([49e0e0c](https://github.com/tracerbench/tracerbench/commit/49e0e0c)) -- don't gzip it. ([6dc675c](https://github.com/tracerbench/tracerbench/commit/6dc675c)) -- prepare to handle ProfileChunk events ([b84a226](https://github.com/tracerbench/tracerbench/commit/b84a226)) -- Update license ([bb42e39](https://github.com/tracerbench/tracerbench/commit/bb42e39)) -- v0.13.1 ([df2d064](https://github.com/tracerbench/tracerbench/commit/df2d064)) - -## 0.13.0 (2018-04-14) - -- A CLI utility for showing the general load timeline for a trace ([2b96875](https://github.com/tracerbench/tracerbench/commit/2b96875)) -- Actually cast to MS and account for freq/dur ([0c9c025](https://github.com/tracerbench/tracerbench/commit/0c9c025)) -- add ability to store common heuristics together, currently just a list of methods ([d17b1fc](https://github.com/tracerbench/tracerbench/commit/d17b1fc)) -- Add CSS parse summary. ([6a9de35](https://github.com/tracerbench/tracerbench/commit/6a9de35)) -- Add many more heuristics ([6191a96](https://github.com/tracerbench/tracerbench/commit/6191a96)) -- Add rounding. ([fa95f06](https://github.com/tracerbench/tracerbench/commit/fa95f06)) -- Add start and end to nodes based on the sample timestamps. ([202be4f](https://github.com/tracerbench/tracerbench/commit/202be4f)) -- add total hits ([7d4e681](https://github.com/tracerbench/tracerbench/commit/7d4e681)) -- add trace model from chrome-tracing ([03af4cc](https://github.com/tracerbench/tracerbench/commit/03af4cc)) -- add Use strict ([bcc27ee](https://github.com/tracerbench/tracerbench/commit/bcc27ee)) -- Adding gc and program ([5beb520](https://github.com/tracerbench/tracerbench/commit/5beb520)) -- Adding rum and platform ([07e3a54](https://github.com/tracerbench/tracerbench/commit/07e3a54)) -- Adhoc queries with stabalized heuristics ([9a2caef](https://github.com/tracerbench/tracerbench/commit/9a2caef)) -- ASDF ([26116b8](https://github.com/tracerbench/tracerbench/commit/26116b8)) -- Attempt to summarize eval times. ([5bc130e](https://github.com/tracerbench/tracerbench/commit/5bc130e)) -- back togeather again ([5a47d92](https://github.com/tracerbench/tracerbench/commit/5a47d92)) -- Begin simplfying ([d2609e1](https://github.com/tracerbench/tracerbench/commit/d2609e1)) -- Better errors when things dont match up ([710e3ff](https://github.com/tracerbench/tracerbench/commit/710e3ff)) -- better report ([a81d931](https://github.com/tracerbench/tracerbench/commit/a81d931)) -- bugz ([1cb8860](https://github.com/tracerbench/tracerbench/commit/1cb8860)) -- change main process heuristic to be the process that has a CpuProfile ([1c70048](https://github.com/tracerbench/tracerbench/commit/1c70048)) -- Cleanup CLI and add Reporter/Aggregator ([2e40da7](https://github.com/tracerbench/tracerbench/commit/2e40da7)) -- Cleanup row formatting ([f811ce0](https://github.com/tracerbench/tracerbench/commit/f811ce0)) -- complete graph of CPU profile ([dbb777c](https://github.com/tracerbench/tracerbench/commit/dbb777c)) -- Compute self times from sample deltas and timestamps ([6f65606](https://github.com/tracerbench/tracerbench/commit/6f65606)) -- Create README.md ([81d70cb](https://github.com/tracerbench/tracerbench/commit/81d70cb)) -- Delete index.js ([c847b62](https://github.com/tracerbench/tracerbench/commit/c847b62)) -- Dont double count ([5565445](https://github.com/tracerbench/tracerbench/commit/5565445)) -- filter heirarchy ([6e68579](https://github.com/tracerbench/tracerbench/commit/6e68579)) -- First pass at CLI tool ([0eaa116](https://github.com/tracerbench/tracerbench/commit/0eaa116)) -- Fix index.html ([f381b0b](https://github.com/tracerbench/tracerbench/commit/f381b0b)) -- fix last sample timestamp ([c3da6b2](https://github.com/tracerbench/tracerbench/commit/c3da6b2)) -- Fix timings ([ed05264](https://github.com/tracerbench/tracerbench/commit/ed05264)) -- fix, save cpuProfile as a separate json to inspect. ([d55a5a8](https://github.com/tracerbench/tracerbench/commit/d55a5a8)) -- handle mainProcess in Trace. ([85f48d0](https://github.com/tracerbench/tracerbench/commit/85f48d0)) -- Ignore linkedin profiles ([e4e8fa0](https://github.com/tracerbench/tracerbench/commit/e4e8fa0)) -- Introduce time slicing ([98965c9](https://github.com/tracerbench/tracerbench/commit/98965c9)) -- make it easier to iterate on and visualize stuff ([63395e7](https://github.com/tracerbench/tracerbench/commit/63395e7)) -- More heuristics ([6cd567c](https://github.com/tracerbench/tracerbench/commit/6cd567c)) -- More heuristics ([bdc47ac](https://github.com/tracerbench/tracerbench/commit/bdc47ac)) -- Move to typescript ([910589a](https://github.com/tracerbench/tracerbench/commit/910589a)) -- process sample timestamps ([e64b945](https://github.com/tracerbench/tracerbench/commit/e64b945)) -- Remove comments ([4ca3057](https://github.com/tracerbench/tracerbench/commit/4ca3057)) -- rename ([11bdf1e](https://github.com/tracerbench/tracerbench/commit/11bdf1e)) -- Reporting works again ([3aceed4](https://github.com/tracerbench/tracerbench/commit/3aceed4)) -- rm ([eba1943](https://github.com/tracerbench/tracerbench/commit/eba1943)) -- Round the results ([aabaf09](https://github.com/tracerbench/tracerbench/commit/aabaf09)) -- Sort call sites ([23c46a8](https://github.com/tracerbench/tracerbench/commit/23c46a8)) -- update fixture app to ember-performance complex list ([55b406a](https://github.com/tracerbench/tracerbench/commit/55b406a)) -- update heuristics ([a74fe84](https://github.com/tracerbench/tracerbench/commit/a74fe84)) -- Update package.json ([f3e4058](https://github.com/tracerbench/tracerbench/commit/f3e4058)) -- update type info ([d057217](https://github.com/tracerbench/tracerbench/commit/d057217)) -- Use self time ([e2a3f2d](https://github.com/tracerbench/tracerbench/commit/e2a3f2d)) -- Util to list all methods used in a given profile ([d553ff7](https://github.com/tracerbench/tracerbench/commit/d553ff7)) -- v0.13.0 ([d5b0c07](https://github.com/tracerbench/tracerbench/commit/d5b0c07)) -- Verify that we are not double counting ([05f3fcc](https://github.com/tracerbench/tracerbench/commit/05f3fcc)) -- WIP ([8864f52](https://github.com/tracerbench/tracerbench/commit/8864f52)) -- WIP ([67d9c80](https://github.com/tracerbench/tracerbench/commit/67d9c80)) -- WIP ([c94eec1](https://github.com/tracerbench/tracerbench/commit/c94eec1)) -- x is mergeMixins ([a6d0771](https://github.com/tracerbench/tracerbench/commit/a6d0771)) - -## 0.12.2 (2018-03-06) - -- Add page labels for the runtime stats. ([309ab94](https://github.com/tracerbench/tracerbench/commit/309ab94)) -- Add page numbers for the runtime stats groupings.. ([8f0c9bf](https://github.com/tracerbench/tracerbench/commit/8f0c9bf)) -- Extract runtime stats to separate report. ([7a4860a](https://github.com/tracerbench/tracerbench/commit/7a4860a)) -- Fix typescript@2.7.1 related changes to --strict. ([6cece3a](https://github.com/tracerbench/tracerbench/commit/6cece3a)) -- Fix typo IInterationSample -> IIterationSample. ([2487366](https://github.com/tracerbench/tracerbench/commit/2487366)) -- plot runtime stats ([7048403](https://github.com/tracerbench/tracerbench/commit/7048403)) -- Suppress messages when loading jsonlite ([391b74e](https://github.com/tracerbench/tracerbench/commit/391b74e)) -- Update typescript to 2.7.1. ([cf7064a](https://github.com/tracerbench/tracerbench/commit/cf7064a)) -- use local loopback IP instead of localhost ([dc5f365](https://github.com/tracerbench/tracerbench/commit/dc5f365)) -- v0.12.2 ([95a2d39](https://github.com/tracerbench/tracerbench/commit/95a2d39)) - -## 0.12.1 (2018-01-30) - -- [BUGFIX] filter out Chrome64 Renderer stragglers ([5e651ed](https://github.com/tracerbench/tracerbench/commit/5e651ed)) -- Fix issue with Chrome security patch leaving Renderers behind ([82a6302](https://github.com/tracerbench/tracerbench/commit/82a6302)) -- v0.12.1 ([b55e801](https://github.com/tracerbench/tracerbench/commit/b55e801)) - -## 0.12.0 (2017-12-11) - -- Fix unable to find main process. ([f3acd7b](https://github.com/tracerbench/tracerbench/commit/f3acd7b)) -- Remove pid from interface ([0852f8d](https://github.com/tracerbench/tracerbench/commit/0852f8d)) -- v0.12.0 ([4ff2d4e](https://github.com/tracerbench/tracerbench/commit/4ff2d4e)) - -## 0.11.2 (2017-07-20) - -- Ensure executables are in the packed build ([c8b11e9](https://github.com/tracerbench/tracerbench/commit/c8b11e9)) -- fix travis report ([928760b](https://github.com/tracerbench/tracerbench/commit/928760b)) -- v0.11.2 ([3803dfa](https://github.com/tracerbench/tracerbench/commit/3803dfa)) - -## 0.11.1 (2017-07-20) - -- Export plot/report as binaries ([e18769c](https://github.com/tracerbench/tracerbench/commit/e18769c)) -- update chrome-debugging-client to pickup fix for ([f61f06e](https://github.com/tracerbench/tracerbench/commit/f61f06e)) -- v0.11.1 ([9b8c151](https://github.com/tracerbench/tracerbench/commit/9b8c151)) - -## 0.11.0 (2017-07-18) - -- A R script for plotting results. ([b37abe3](https://github.com/tracerbench/tracerbench/commit/b37abe3)) -- add iteration to samples so multiple samples within ([4ecac63](https://github.com/tracerbench/tracerbench/commit/4ecac63)) -- Add R scripts to package. ([ff8da13](https://github.com/tracerbench/tracerbench/commit/ff8da13)) -- add type factor for default data frame ([a92c78c](https://github.com/tracerbench/tracerbench/commit/a92c78c)) -- make input file a command line arg. ([c2aa345](https://github.com/tracerbench/tracerbench/commit/c2aa345)) -- make script source ResultSets.R relative to itself ([75108cd](https://github.com/tracerbench/tracerbench/commit/75108cd)) -- refactor building data frame to preallocate rows ([7e736df](https://github.com/tracerbench/tracerbench/commit/7e736df)) -- Refactor R results class. ([4919ed7](https://github.com/tracerbench/tracerbench/commit/4919ed7)) -- some more cleanup ([3341715](https://github.com/tracerbench/tracerbench/commit/3341715)) -- test CPU throttle ([7fa3a9a](https://github.com/tracerbench/tracerbench/commit/7fa3a9a)) -- v0.11.0 ([77776f9](https://github.com/tracerbench/tracerbench/commit/77776f9)) - -## 0.10.0 (2017-06-26) - -- aggregate runtime call stats per iteration ([ea2df05](https://github.com/tracerbench/tracerbench/commit/ea2df05)) -- another attempt ([3e42897](https://github.com/tracerbench/tracerbench/commit/3e42897)) -- Bump chrome-debugging-client ([a921068](https://github.com/tracerbench/tracerbench/commit/a921068)) -- bump deps ([d1adc16](https://github.com/tracerbench/tracerbench/commit/d1adc16)) -- cleanup ([1049e17](https://github.com/tracerbench/tracerbench/commit/1049e17)) -- Cleanup of metrics and better errors. ([7b8ca2f](https://github.com/tracerbench/tracerbench/commit/7b8ca2f)) -- fix absolute path ([dd4e833](https://github.com/tracerbench/tracerbench/commit/dd4e833)) -- Fix js time. ([fdfaa2f](https://github.com/tracerbench/tracerbench/commit/fdfaa2f)) -- Fix missing runtime stats ([9458fe8](https://github.com/tracerbench/tracerbench/commit/9458fe8)) -- get newer version of R ([add39be](https://github.com/tracerbench/tracerbench/commit/add39be)) -- give progress for building test fixtures ([b76a2a3](https://github.com/tracerbench/tracerbench/commit/b76a2a3)) -- improve report example ([8486dc6](https://github.com/tracerbench/tracerbench/commit/8486dc6)) -- limit packages more, since some fail to install, ([33fa883](https://github.com/tracerbench/tracerbench/commit/33fa883)) -- make headless ([93a99bb](https://github.com/tracerbench/tracerbench/commit/93a99bb)) -- make sure we output browser version ([886f149](https://github.com/tracerbench/tracerbench/commit/886f149)) -- no need to create many sessions, session is just a ([58cc734](https://github.com/tracerbench/tracerbench/commit/58cc734)) -- remove gcStats option because it is inconsistently ([ea88ab9](https://github.com/tracerbench/tracerbench/commit/ea88ab9)) -- report results in R ([af2d670](https://github.com/tracerbench/tracerbench/commit/af2d670)) -- separate out results obj so we can reuse ([f70c39b](https://github.com/tracerbench/tracerbench/commit/f70c39b)) -- test R install ([9a2e49a](https://github.com/tracerbench/tracerbench/commit/9a2e49a)) -- try PPA packages ([7c383ca](https://github.com/tracerbench/tracerbench/commit/7c383ca)) -- use block elements for histogram instead of braille ([e0a4324](https://github.com/tracerbench/tracerbench/commit/e0a4324)) -- v0.10.0 ([d7906ac](https://github.com/tracerbench/tracerbench/commit/d7906ac)) - -## 0.9.0 (2017-04-22) - -- 0.9.0 ([fa8d29d](https://github.com/tracerbench/tracerbench/commit/fa8d29d)) -- cleanup trace promise stuff, add delay param. ([69191c0](https://github.com/tracerbench/tracerbench/commit/69191c0)) -- doh, this feature was broken until this commit ([ac27b2e](https://github.com/tracerbench/tracerbench/commit/ac27b2e)) -- fixing tslint and socket error on tab closing. ([1a63437](https://github.com/tracerbench/tracerbench/commit/1a63437)) - -## 0.8.0 (2017-04-12) - -- 0.8.0 ([476fb60](https://github.com/tracerbench/tracerbench/commit/476fb60)) -- Separate out the v8 trace events further into ([174d9bb](https://github.com/tracerbench/tracerbench/commit/174d9bb)) - -## 0.7.0 (2017-04-12) - -- 0.7.0 ([62ed597](https://github.com/tracerbench/tracerbench/commit/62ed597)) -- add gc stats and runtime stats to iteration sample ([2edf71e](https://github.com/tracerbench/tracerbench/commit/2edf71e)) -- Fix issue with calling buildModel() too much. ([ef305ec](https://github.com/tracerbench/tracerbench/commit/ef305ec)) -- fix test ([75615da](https://github.com/tracerbench/tracerbench/commit/75615da)) -- turn B/E events into complete events during compilation. ([11fe087](https://github.com/tracerbench/tracerbench/commit/11fe087)) - -## 0.6.0 (2017-04-11) - -- Add CPU and Network Throttling support. ([5e30c76](https://github.com/tracerbench/tracerbench/commit/5e30c76)) -- v0.6.0 ([074d664](https://github.com/tracerbench/tracerbench/commit/074d664)) - -## 0.5.0 (2017-04-10) - -- 0.5.0 ([8f98090](https://github.com/tracerbench/tracerbench/commit/8f98090)) -- bump debugging client ([76cf923](https://github.com/tracerbench/tracerbench/commit/76cf923)) -- Fix README homonym ([df40b3d](https://github.com/tracerbench/tracerbench/commit/df40b3d)) -- update protocol ([889ad8b](https://github.com/tracerbench/tracerbench/commit/889ad8b)) -- Update README.md ([3ddd5ba](https://github.com/tracerbench/tracerbench/commit/3ddd5ba)) - -## 0.4.3 (2017-04-04) - -- 0.4.3 ([0da424c](https://github.com/tracerbench/tracerbench/commit/0da424c)) -- fix main thread assignment. ([5f00957](https://github.com/tracerbench/tracerbench/commit/5f00957)) - -## 0.4.2 (2017-04-04) - -- 0.4.2 ([8270fc9](https://github.com/tracerbench/tracerbench/commit/8270fc9)) -- add script streamer thread to model. ([65c5024](https://github.com/tracerbench/tracerbench/commit/65c5024)) -- don't pack more than the dist ([5f0eb1c](https://github.com/tracerbench/tracerbench/commit/5f0eb1c)) -- fix build error ([49e7c6d](https://github.com/tracerbench/tracerbench/commit/49e7c6d)) -- start adding v8 stats. ([b7c1e61](https://github.com/tracerbench/tracerbench/commit/b7c1e61)) - -## 0.4.1 (2017-03-08) - -- Add ability to inject custom scripts ([f59fb29](https://github.com/tracerbench/tracerbench/commit/f59fb29)) -- Add ability to wait for `navigation` to complete ([65d6051](https://github.com/tracerbench/tracerbench/commit/65d6051)) -- add cpus to meta, doesn't really mean that the samples aren't or are comparable ([d0dccab](https://github.com/tracerbench/tracerbench/commit/d0dccab)) -- add npmignore and add folder excludes to settings ([6914884](https://github.com/tracerbench/tracerbench/commit/6914884)) -- add reexports ([a1e1e60](https://github.com/tracerbench/tracerbench/commit/a1e1e60)) -- Adding some more docs ([9524b35](https://github.com/tracerbench/tracerbench/commit/9524b35)) -- bump dep ([d6f1ef7](https://github.com/tracerbench/tracerbench/commit/d6f1ef7)) -- bump for release ([39492f0](https://github.com/tracerbench/tracerbench/commit/39492f0)) -- bump for release ([2598724](https://github.com/tracerbench/tracerbench/commit/2598724)) -- bump release ([b24fd7f](https://github.com/tracerbench/tracerbench/commit/b24fd7f)) -- bump version ([832786e](https://github.com/tracerbench/tracerbench/commit/832786e)) -- cleanup metrics. ([062e273](https://github.com/tracerbench/tracerbench/commit/062e273)) -- cleanup, fix bug. ([441b974](https://github.com/tracerbench/tracerbench/commit/441b974)) -- Extract the main loop into a runner object ([fbfa97b](https://github.com/tracerbench/tracerbench/commit/fbfa97b)) -- Find process and thread via blink.net events, allow use of ES6 features of modern node. ([cb0a35d](https://github.com/tracerbench/tracerbench/commit/cb0a35d)) -- fix left in debugging ([e166bda](https://github.com/tracerbench/tracerbench/commit/e166bda)) -- fix license ([6a0156d](https://github.com/tracerbench/tracerbench/commit/6a0156d)) -- Fix README ([c78723f](https://github.com/tracerbench/tracerbench/commit/c78723f)) -- fix tslint errors ([96ab799](https://github.com/tracerbench/tracerbench/commit/96ab799)) -- Fixing some deps ([2cc8e10](https://github.com/tracerbench/tracerbench/commit/2cc8e10)) -- go back to new tab every iteration as it produces more consistent traces ([9351969](https://github.com/tracerbench/tracerbench/commit/9351969)) -- improve metrics ([d623861](https://github.com/tracerbench/tracerbench/commit/d623861)) -- Initial commit ([01ec133](https://github.com/tracerbench/tracerbench/commit/01ec133)) -- Make base Benchmark class ([77313c9](https://github.com/tracerbench/tracerbench/commit/77313c9)) -- Measure script eval duration and function call duration for initial render. ([22c04ab](https://github.com/tracerbench/tracerbench/commit/22c04ab)) -- more fixes ([e14448a](https://github.com/tracerbench/tracerbench/commit/e14448a)) -- more WIP ([a9caeff](https://github.com/tracerbench/tracerbench/commit/a9caeff)) -- need a delay after opening a new tab and stringify the sample creates too much I/O ([16fbf5e](https://github.com/tracerbench/tracerbench/commit/16fbf5e)) -- needs deps ([372cf33](https://github.com/tracerbench/tracerbench/commit/372cf33)) -- node 4 does not have splat ([70a1b09](https://github.com/tracerbench/tracerbench/commit/70a1b09)) -- Support iframes ([611bd36](https://github.com/tracerbench/tracerbench/commit/611bd36)) -- temp workaround to see if this fixes travis ([5f4f4b6](https://github.com/tracerbench/tracerbench/commit/5f4f4b6)) -- Travis needs a better way to debug ([1e29bcb](https://github.com/tracerbench/tracerbench/commit/1e29bcb)) -- try again ([2fc39f8](https://github.com/tracerbench/tracerbench/commit/2fc39f8)) -- try again ([18d07a2](https://github.com/tracerbench/tracerbench/commit/18d07a2)) -- try installing newer chrome ([3b16f26](https://github.com/tracerbench/tracerbench/commit/3b16f26)) -- try trusty beta for newer c++ ([15df708](https://github.com/tracerbench/tracerbench/commit/15df708)) -- update chrome-debugging-client ([8ee9e88](https://github.com/tracerbench/tracerbench/commit/8ee9e88)) -- update deps ([c37b280](https://github.com/tracerbench/tracerbench/commit/c37b280)) -- Update readme ([c1c27d6](https://github.com/tracerbench/tracerbench/commit/c1c27d6)) -- update test for new runner ([f165324](https://github.com/tracerbench/tracerbench/commit/f165324)) -- update to use chrome-debugging-client module ([64245ef](https://github.com/tracerbench/tracerbench/commit/64245ef)) -- use sudo ([bedef6e](https://github.com/tracerbench/tracerbench/commit/bedef6e)) diff --git a/packages/cli/README.md b/packages/cli/README.md index c65f8f76..0726b4c8 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -426,6 +426,9 @@ OPTIONS --locations=locations include locations in names + --marker=marker + (required) [default: domComplete] The last marker before ending recording + --network=none | offline | dialup | 2g | edge | slow-3g | em-3g | dsl | 3g | fast-3g | 4g | cable | LTE | FIOS [default: none] Simulated network conditions. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index e5855ef2..655182f2 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -1 +1 @@ -{"version":"2.3.0","commands":{"":{"id":"","description":"Generates a HAR file from a URL.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"dest":{"name":"dest","type":"option","description":"The destination path for the generated file","required":true,"default":""},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"filename":{"name":"filename","type":"option","description":"The filename for the generated file","required":true,"default":"tracerbench"},"marker":{"name":"marker","type":"option","description":"The last marker before ending recording","required":true,"default":"domComplete"}},"args":[]},"marker-timings":{"id":"marker-timings","description":"Get list of all user-timings from trace","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"filter":{"name":"filter","type":"option","description":"User timing marks start with"},"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"traceFrame":{"name":"traceFrame","type":"option","description":"Specify a trace insights frame"}},"args":[]},"record-har":{"id":"record-har","description":"Generates a HAR file from a URL.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"dest":{"name":"dest","type":"option","description":"The destination path for the generated file","required":true,"default":""},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"filename":{"name":"filename","type":"option","description":"The filename for the generated file","required":true,"default":"tracerbench"},"marker":{"name":"marker","type":"option","description":"The last marker before ending recording","required":true,"default":"domComplete"}},"args":[]},"report":{"id":"report","description":"Parses the output json from tracerbench and formats it into pdf and html","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"config":{"name":"config","type":"option","description":"Specify an alternative directory rather than the project root for the tbconfig.json. This explicit config will overwrite all."}},"args":[]},"trace":{"id":"trace","description":"Parses a CPU profile and aggregates time across heuristics. Can optinally be vertically sliced with event names.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"cpuThrottleRate":{"name":"cpuThrottleRate","type":"option","description":"CPU throttle multiplier","required":true,"default":2},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"harpath":{"name":"harpath","type":"option","description":"The path to the HTTP Archive File (HAR)","required":true},"network":{"name":"network","type":"option","description":"Simulated network conditions.","options":["none | offline | dialup | 2g | edge | slow-3g | em-3g | dsl | 3g | fast-3g | 4g | cable | LTE | FIOS"],"default":"none"},"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"iterations":{"name":"iterations","type":"option","description":"Number of runs","required":true,"default":1},"locations":{"name":"locations","type":"option","description":"include locations in names"},"insights":{"name":"insights","type":"boolean","description":"Analyze insights from command.","allowNo":false}},"args":[]},"compare:analyze":{"id":"compare:analyze","description":"Run an analysis of a benchmark run from a results json file and output to terminal","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"fidelity":{"name":"fidelity","type":"option","description":"Directly correlates to the number of samples per trace. High is the longest trace time.","required":true,"default":"low"},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"}},"args":[{"name":"resultsFile","description":"Results JSON file","required":true}]},"compare":{"id":"compare","description":"Compare the performance delta between an experiment and control","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"hideAnalysis":{"name":"hideAnalysis","type":"boolean","description":"Hide the the analysis output in terminal","allowNo":false},"browserArgs":{"name":"browserArgs","type":"option","description":"(Default Recommended) Additional chrome flags for the TracerBench render benchmark. TracerBench includes many non-configurable defaults in this category.","required":true,"default":["--crash-dumps-dir=./tmp","--disable-background-timer-throttling","--disable-dev-shm-usage","--disable-cache","--disable-v8-idle-tasks","--disable-breakpad","--disable-notifications","--disable-hang-monitor","--safebrowsing-disable-auto-update","--ignore-certificate-errors","--v8-cache-options=none"]},"cpuThrottleRate":{"name":"cpuThrottleRate","type":"option","description":"CPU throttle multiplier","required":true,"default":2},"fidelity":{"name":"fidelity","type":"option","description":"Directly correlates to the number of samples per trace. High is the longest trace time.","required":true,"default":"low"},"markers":{"name":"markers","type":"option","description":"User Timing Markers","required":true,"default":"domComplete"},"network":{"name":"network","type":"option","description":"Simulated network conditions.","required":true,"options":["none | offline | dialup | 2g | edge | slow-3g | em-3g | dsl | 3g | fast-3g | 4g | cable | LTE | FIOS"],"default":"none"},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"controlURL":{"name":"controlURL","type":"option","description":"Control URL to visit for compare command","required":true},"experimentURL":{"name":"experimentURL","type":"option","description":"Experiment URL to visit for compare command","required":true},"tracingLocationSearch":{"name":"tracingLocationSearch","type":"option","description":"The document location search param.","required":true,"default":"?tracing"},"emulateDevice":{"name":"emulateDevice","type":"option","description":"Emulate a mobile device screen size.","options":["iphone-4","iphone-5se","iphone-678","iphone-678-plus","iphone-x","blackberry-z30","nexus-4","nexus-5","nexus-5x","nexus-6","nexus-6p","pixel-2","pixel-2-xl","lg-optimus-l70","nokia-n9","nokia-lumia-520","microsoft-lumia-550","microsoft-lumia-950","galaxy-s-iii","galaxy-s5","kindle-fire-hdx","ipad-mini","ipad","ipad-pro","blackberry-playbook","nexus-10","nexus-7","galaxy-note-3","galaxy-note-ii","laptop-with-touch","laptop-with-hidpi-screen","laptop-with-mdpi-screen"],"default":""},"emulateDeviceOrientation":{"name":"emulateDeviceOrientation","type":"option","description":"Expected to be either \"vertical\" or \"horizontal\". Dictates orientation of device screen.","options":["horizontal","vertical"],"default":"vertical"},"socksPorts":{"name":"socksPorts","type":"option","description":"Specify a socks proxy port as browser option for control and experiment"},"regressionThreshold":{"name":"regressionThreshold","type":"option","description":"Regression threshold in negative milliseconds. eg -100ms","default":"0ms"},"config":{"name":"config","type":"option","description":"Specify an alternative directory rather than the project root for the tbconfig.json. This explicit config will overwrite all."},"runtimeStats":{"name":"runtimeStats","type":"boolean","description":"Compare command output deep-dive stats during run.","allowNo":false},"report":{"name":"report","type":"boolean","description":"Generate a PDF report directly after running the compare command.","allowNo":false},"debug":{"name":"debug","type":"boolean","description":"Debug flag per command. Will output noisy command","allowNo":false},"headless":{"name":"headless","type":"boolean","description":"Run with headless chrome flags","allowNo":false}},"args":[]}}} \ No newline at end of file +{"version":"2.3.0","commands":{"":{"id":"","description":"Generates a HAR file from a URL.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"dest":{"name":"dest","type":"option","description":"The destination path for the generated file","required":true,"default":""},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"filename":{"name":"filename","type":"option","description":"The filename for the generated file","required":true,"default":"tracerbench"},"marker":{"name":"marker","type":"option","description":"The last marker before ending recording","required":true,"default":"domComplete"}},"args":[]},"marker-timings":{"id":"marker-timings","description":"Get list of all user-timings from trace","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"filter":{"name":"filter","type":"option","description":"User timing marks start with"},"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"traceFrame":{"name":"traceFrame","type":"option","description":"Specify a trace insights frame"}},"args":[]},"record-har":{"id":"record-har","description":"Generates a HAR file from a URL.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"dest":{"name":"dest","type":"option","description":"The destination path for the generated file","required":true,"default":""},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"filename":{"name":"filename","type":"option","description":"The filename for the generated file","required":true,"default":"tracerbench"},"marker":{"name":"marker","type":"option","description":"The last marker before ending recording","required":true,"default":"domComplete"}},"args":[]},"report":{"id":"report","description":"Parses the output json from tracerbench and formats it into pdf and html","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"config":{"name":"config","type":"option","description":"Specify an alternative directory rather than the project root for the tbconfig.json. This explicit config will overwrite all."}},"args":[]},"trace":{"id":"trace","description":"Parses a CPU profile and aggregates time across heuristics. Can optinally be vertically sliced with event names.","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"cpuThrottleRate":{"name":"cpuThrottleRate","type":"option","description":"CPU throttle multiplier","required":true,"default":2},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"harpath":{"name":"harpath","type":"option","description":"The path to the HTTP Archive File (HAR)","required":true},"network":{"name":"network","type":"option","description":"Simulated network conditions.","options":["none | offline | dialup | 2g | edge | slow-3g | em-3g | dsl | 3g | fast-3g | 4g | cable | LTE | FIOS"],"default":"none"},"url":{"name":"url","type":"option","description":"URL to visit for record-har, timings & trace commands","required":true},"cookiespath":{"name":"cookiespath","type":"option","description":"The path to a JSON file containing cookies to authenticate against the correlated URL","required":true},"iterations":{"name":"iterations","type":"option","description":"Number of runs","required":true,"default":1},"locations":{"name":"locations","type":"option","description":"include locations in names"},"marker":{"name":"marker","type":"option","description":"The last marker before ending recording","required":true,"default":"domComplete"},"insights":{"name":"insights","type":"boolean","description":"Analyze insights from command.","allowNo":false}},"args":[]},"compare:analyze":{"id":"compare:analyze","description":"Run an analysis of a benchmark run from a results json file and output to terminal","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"fidelity":{"name":"fidelity","type":"option","description":"Directly correlates to the number of samples per trace. High is the longest trace time.","required":true,"default":"low"},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"}},"args":[{"name":"resultsFile","description":"Results JSON file","required":true}]},"compare":{"id":"compare","description":"Compare the performance delta between an experiment and control","pluginName":"tracerbench","pluginType":"core","aliases":[],"flags":{"hideAnalysis":{"name":"hideAnalysis","type":"boolean","description":"Hide the the analysis output in terminal","allowNo":false},"browserArgs":{"name":"browserArgs","type":"option","description":"(Default Recommended) Additional chrome flags for the TracerBench render benchmark. TracerBench includes many non-configurable defaults in this category.","required":true,"default":["--crash-dumps-dir=./tmp","--disable-background-timer-throttling","--disable-dev-shm-usage","--disable-cache","--disable-v8-idle-tasks","--disable-breakpad","--disable-notifications","--disable-hang-monitor","--safebrowsing-disable-auto-update","--ignore-certificate-errors","--v8-cache-options=none"]},"cpuThrottleRate":{"name":"cpuThrottleRate","type":"option","description":"CPU throttle multiplier","required":true,"default":2},"fidelity":{"name":"fidelity","type":"option","description":"Directly correlates to the number of samples per trace. High is the longest trace time.","required":true,"default":"low"},"markers":{"name":"markers","type":"option","description":"User Timing Markers","required":true,"default":"domComplete"},"network":{"name":"network","type":"option","description":"Simulated network conditions.","required":true,"options":["none | offline | dialup | 2g | edge | slow-3g | em-3g | dsl | 3g | fast-3g | 4g | cable | LTE | FIOS"],"default":"none"},"tbResultsFolder":{"name":"tbResultsFolder","type":"option","description":"The output folder path for all tracerbench results","required":true,"default":"./tracerbench-results"},"controlURL":{"name":"controlURL","type":"option","description":"Control URL to visit for compare command","required":true},"experimentURL":{"name":"experimentURL","type":"option","description":"Experiment URL to visit for compare command","required":true},"tracingLocationSearch":{"name":"tracingLocationSearch","type":"option","description":"The document location search param.","required":true,"default":"?tracing"},"emulateDevice":{"name":"emulateDevice","type":"option","description":"Emulate a mobile device screen size.","options":["iphone-4","iphone-5se","iphone-678","iphone-678-plus","iphone-x","blackberry-z30","nexus-4","nexus-5","nexus-5x","nexus-6","nexus-6p","pixel-2","pixel-2-xl","lg-optimus-l70","nokia-n9","nokia-lumia-520","microsoft-lumia-550","microsoft-lumia-950","galaxy-s-iii","galaxy-s5","kindle-fire-hdx","ipad-mini","ipad","ipad-pro","blackberry-playbook","nexus-10","nexus-7","galaxy-note-3","galaxy-note-ii","laptop-with-touch","laptop-with-hidpi-screen","laptop-with-mdpi-screen"],"default":""},"emulateDeviceOrientation":{"name":"emulateDeviceOrientation","type":"option","description":"Expected to be either \"vertical\" or \"horizontal\". Dictates orientation of device screen.","options":["horizontal","vertical"],"default":"vertical"},"socksPorts":{"name":"socksPorts","type":"option","description":"Specify a socks proxy port as browser option for control and experiment"},"regressionThreshold":{"name":"regressionThreshold","type":"option","description":"Regression threshold in negative milliseconds. eg -100ms","default":"0ms"},"config":{"name":"config","type":"option","description":"Specify an alternative directory rather than the project root for the tbconfig.json. This explicit config will overwrite all."},"runtimeStats":{"name":"runtimeStats","type":"boolean","description":"Compare command output deep-dive stats during run.","allowNo":false},"report":{"name":"report","type":"boolean","description":"Generate a PDF report directly after running the compare command.","allowNo":false},"debug":{"name":"debug","type":"boolean","description":"Debug flag per command. Will output noisy command","allowNo":false},"headless":{"name":"headless","type":"boolean","description":"Run with headless chrome flags","allowNo":false}},"args":[]}}} \ No newline at end of file diff --git a/packages/cli/src/commands/record-har.ts b/packages/cli/src/commands/record-har.ts index 0f14235f..43e5b6f3 100644 --- a/packages/cli/src/commands/record-har.ts +++ b/packages/cli/src/commands/record-har.ts @@ -1,7 +1,7 @@ import { readJson, writeFileSync } from 'fs-extra'; import { resolve, join } from 'path'; -import { setGracefulCleanup, dirSync } from 'tmp'; -import { recordHARClient } from '@tracerbench/core'; +import { setGracefulCleanup } from 'tmp'; +import { recordHARClient, getBrowserArgs } from '@tracerbench/core'; import { TBBaseCommand } from '../command-config'; import { dest, url, cookiespath, filename, marker } from '../helpers/flags'; @@ -40,65 +40,3 @@ export default class RecordHAR extends TBBaseCommand { this.log(`HAR recorded and available here: ${harPath}`); } } - -function getBrowserArgs(): string[] { - interface IViewOptions { - windowSize: { - width: number; - height: number; - }; - deviceScaleFactor: number; - userAgent: string | undefined; - } - - const tmpDir = dirSync({ - unsafeCleanup: true, - }); - - const options: IViewOptions = { - windowSize: { - width: 1280, - height: 800, - }, - deviceScaleFactor: 0, - userAgent: undefined, - }; - - return [ - `--crash-dumps-dir=${tmpDir.name}`, - '--disable-background-networking', - '--disable-background-timer-throttling', - '--disable-backgrounding-occluded-windows', - '--disable-component-extensions-with-background-pages', - '--disable-client-side-phishing-detection', - '--disable-default-apps', - '--disable-dev-shm-usage', - '--disable-domain-reliability', - '--disable-extensions', - '--disable-features=NetworkPrediction', - '--disable-features=site-per-process,TranslateUI,BlinkGenPropertyTrees', - '--disable-hang-monitor', - '--disable-ipc-flooding-protection', - '--disable-notifications', - '--disable-renderer-backgrounding', - '--disable-sync', - '--disable-translate', - '--disable-v8-idle-tasks', - `--device-scale-factor=${options.deviceScaleFactor}`, - '--ignore-certificate-errors-spki-list=uU0W87bsSHNaY+g/o8S9PmyxIgf92JepLWrPg5bYb+s=', - '--metrics-recording-only', - '--no-pings', - '--no-first-run', - '--no-default-browser-check', - '--no-experiments', - '--no-sandbox', - '--password-store=basic', - '--safebrowsing-disable-auto-update', - '--use-mock-keychain', - `--user-agent=${options.userAgent}`, - `--user-data-dir=${tmpDir.name}`, - '--v8-cache-options=none', - `--window-size=${options.windowSize.width},${options.windowSize.height}`, - '--headless', - ]; -} diff --git a/packages/cli/src/commands/trace.ts b/packages/cli/src/commands/trace.ts index cd10845e..5eea93f4 100644 --- a/packages/cli/src/commands/trace.ts +++ b/packages/cli/src/commands/trace.ts @@ -19,6 +19,7 @@ import { locations, harpath, cookiespath, + marker, } from '../helpers/flags'; import { normalizeFnName, @@ -37,6 +38,7 @@ export default class Trace extends TBBaseCommand { cookiespath: cookiespath({ required: true }), iterations: iterations({ required: true }), locations: locations(), + marker: marker({ required: true }), insights, }; @@ -51,12 +53,11 @@ export default class Trace extends TBBaseCommand { locations, network, harpath, + marker, } = flags; const methods = ['']; - const traceJSONFile = path.resolve(tbResultsFolder, 'trace.json'); - const traceJSON = await readJson(traceJSONFile); const cookiesJSON = await readJson(path.resolve(cookiespath)); const traceHAR = path.resolve(harpath); const traceHARJSON = await readJson(traceHAR); @@ -64,15 +65,24 @@ export default class Trace extends TBBaseCommand { cpu: cpuThrottleRate, network, }; + + console.log(`running live trace`); + + // run the liveTrace + const { traceEvents } = await liveTrace( + url, + tbResultsFolder, + cookiesJSON, + conditions, + marker + ); + const analyzeOptions: IAnalyze = { - traceJSON, + traceEvents, traceHARJSON, methods, }; - // run the liveTrace - await liveTrace(url, traceJSONFile, cookiesJSON, conditions); - // analyze the liveTrace await analyze(analyzeOptions); @@ -85,7 +95,7 @@ export default class Trace extends TBBaseCommand { const methods = new Set(); try { - trace = setTraceEvents(traceJSON); + trace = setTraceEvents(traceEvents); } catch (error) { this.error(`${error}`); } @@ -149,7 +159,7 @@ export default class Trace extends TBBaseCommand { } try { - trace = setTraceEvents(traceJSON); + trace = setTraceEvents(traceEvents); const traceLoad = trace.filter(isCommitLoad); traceLoad.forEach( ({ @@ -166,6 +176,6 @@ export default class Trace extends TBBaseCommand { this.error(`${error}`); } } - return this.log(`${traceJSON}`); + return this.log(`${traceEvents}`); } } diff --git a/packages/cli/test/commands/trace.test.ts b/packages/cli/test/commands/trace.test.ts index de400c93..4381286d 100644 --- a/packages/cli/test/commands/trace.test.ts +++ b/packages/cli/test/commands/trace.test.ts @@ -1,7 +1,5 @@ import { test } from '@oclif/test'; import { expect } from 'chai'; -import { readJsonSync } from 'fs-extra'; -import { join } from 'path'; import Trace from '../../src/commands/trace'; import { @@ -9,22 +7,14 @@ import { HAR_PATH, TB_RESULTS_FOLDER, URL, - generateFileStructure, + MARKER, } from '../test-helpers'; -const TRACE_JSON = { - 'trace.json': JSON.stringify( - readJsonSync(join(process.cwd(), '/test/fixtures/results/trace.json')) - ), -}; - -generateFileStructure(TRACE_JSON, TB_RESULTS_FOLDER); - -describe('trace', () => { +describe('trace: insights', () => { test .stdout() .it( - `runs trace --url ${URL} --tbResultsFolder ${TB_RESULTS_FOLDER}`, + `runs trace --url ${URL} --tbResultsFolder ${TB_RESULTS_FOLDER} --harpath ${HAR_PATH} --cookiespath ${COOKIES} --marker ${MARKER}--insights`, async ctx => { await Trace.run([ '--url', @@ -35,26 +25,12 @@ describe('trace', () => { HAR_PATH, '--cookiespath', COOKIES, + '--marker', + MARKER, + '--insights', ]); expect(ctx.stdout).to.contain(`Trace`); expect(ctx.stdout).to.contain(`Subtotal`); - } - ); -}); - -describe('trace: insights', () => { - test - .stdout() - .it( - `runs trace --url ${URL} --tbResultsFolder ${TB_RESULTS_FOLDER} --insights`, - async ctx => { - await Trace.run([ - '--url', - URL, - '--tbResultsFolder', - TB_RESULTS_FOLDER, - '--insights', - ]); expect(ctx.stdout).to.contain(`.js`); expect(ctx.stdout).to.contain(`.css`); expect(ctx.stdout).to.contain(`Frame-URL:`); diff --git a/packages/cli/test/test-helpers.ts b/packages/cli/test/test-helpers.ts index ac435a23..e7012f44 100644 --- a/packages/cli/test/test-helpers.ts +++ b/packages/cli/test/test-helpers.ts @@ -27,8 +27,7 @@ export const URL = 'https://www.tracerbench.com'; export const COMPARE_JSON = resolve( join(process.cwd(), '/test/fixtures/results/compare.json') ); -export const TRACE = resolve(join(process.cwd(), '/test/fixtures/trace.json')); - +export const MARKER = 'domComplete'; export interface FileStructure { [key: string]: string | FileStructure; } diff --git a/packages/tracerbench/src/index.ts b/packages/tracerbench/src/index.ts index 6dcf7a87..0e6ede55 100644 --- a/packages/tracerbench/src/index.ts +++ b/packages/tracerbench/src/index.ts @@ -39,5 +39,6 @@ export { IHeaders, IContent, IEntry, + getBrowserArgs, } from './trace'; export * from './util'; diff --git a/packages/tracerbench/src/trace/analyze.ts b/packages/tracerbench/src/trace/analyze.ts index f45e3845..6856288d 100644 --- a/packages/tracerbench/src/trace/analyze.ts +++ b/packages/tracerbench/src/trace/analyze.ts @@ -26,7 +26,7 @@ import { } from '../trace'; export interface IAnalyze { - traceJSON: ITraceEvent[] | ITrace; + traceEvents: ITraceEvent[] | ITrace; traceHARJSON: IArchive; methods: string[]; filename?: string; @@ -36,13 +36,20 @@ export interface IAnalyze { } export async function analyze(options: IAnalyze) { - const { traceHARJSON, event, filename, traceJSON, report, methods } = options; - const trace = loadTrace(traceJSON); + const { + traceHARJSON, + event, + filename, + traceEvents, + report, + methods, + } = options; + const trace = loadTrace(traceEvents); const profile = getCPUProfile(trace, event)!; const { hierarchy } = profile; const modMatcher = new ModuleMatcher(hierarchy, traceHARJSON); - exportHierarchy(traceJSON, hierarchy, trace, filename, modMatcher); + exportHierarchy(traceEvents, hierarchy, trace, filename, modMatcher); const categories = formatCategories(report, methods); const allMethods = methodsFromCategories(categories); diff --git a/packages/tracerbench/src/trace/archive_trace.ts b/packages/tracerbench/src/trace/archive_trace.ts index f40e6512..4d2ea8bc 100644 --- a/packages/tracerbench/src/trace/archive_trace.ts +++ b/packages/tracerbench/src/trace/archive_trace.ts @@ -44,9 +44,10 @@ export async function recordHARClient( }, }; const browser = await createBrowser(browserArgs); - const chrome = await getTab(browser.connection); try { + const chrome = await getTab(browser.connection); + chrome.on('Network.requestWillBeSent', params => { console.log( `RECORDING-REQUEST :: ${params.request.method} :: ${params.type} :: ${params.request.url}` @@ -66,6 +67,10 @@ export async function recordHARClient( await chrome.send('Network.clearBrowserCache'); // disable cache await chrome.send('Network.setCacheDisabled', { cacheDisabled: true }); + + // !todo add device emulation flag/args + // await emulate(chrome, conditions); + // set cookies await setCookies(chrome, cookies); // add performance observer script to eval @@ -113,7 +118,7 @@ export async function recordHARClient( await chrome.send('Page.close'); } catch (e) { - throw new Error('Network Request could not be captured. ' + e); + throw new Error(`Network Request could not be captured. ${e}`); } finally { if (browser) { await browser.dispose(); diff --git a/packages/tracerbench/src/trace/index.ts b/packages/tracerbench/src/trace/index.ts index 979e36cc..8d8a4693 100644 --- a/packages/tracerbench/src/trace/index.ts +++ b/packages/tracerbench/src/trace/index.ts @@ -8,3 +8,4 @@ export { loadTrace } from './load_trace'; export { liveTrace } from './live_trace'; export { networkConditions, IConditions } from './conditions'; export * from './trace_event'; +export { getBrowserArgs } from './utils'; diff --git a/packages/tracerbench/src/trace/live_trace.ts b/packages/tracerbench/src/trace/live_trace.ts index 1c30b01d..989cdf69 100644 --- a/packages/tracerbench/src/trace/live_trace.ts +++ b/packages/tracerbench/src/trace/live_trace.ts @@ -1,13 +1,12 @@ // tslint:disable:no-console - -import debug from 'debug'; import Protocol from 'devtools-protocol'; -import * as fs from 'fs'; - -const debugCallback = debug('tracerbench:trace'); +import { join, resolve } from 'path'; +import { openSync, readJSONSync, writeSync, closeSync } from 'fs-extra'; import { IConditions } from './conditions'; import { createBrowser, getTab, emulate, setCookies } from './trace-utils'; +import { getBrowserArgs } from './utils'; +import { ITraceEvent } from '../trace'; const DEVTOOLS_CATEGORIES = [ '-*', @@ -25,68 +24,96 @@ const DEVTOOLS_CATEGORIES = [ 'disabled-by-default-v8.cpu_profiler.hires', ]; +interface ITraceEvents { + traceEvents: ITraceEvent[]; +} + export async function liveTrace( url: string, - out: string, + tbResultsFolder: string, cookies: Protocol.Network.CookieParam[], - conditions: IConditions -) { - const browser = await createBrowser([`--crash-dumps-dir=/tmp`]); + conditions: IConditions, + marker: string +): Promise { + const browserArgs = getBrowserArgs(); + const browser = await createBrowser(browserArgs); + const traceFile = join(tbResultsFolder, 'trace.json'); + let traceJSON; try { - const client = await getTab(browser.connection); - await emulate(client, conditions); - await setCookies(client, cookies); + const chrome = await getTab(browser.connection); - const tree = await client.send('Page.getFrameTree'); - const mainFrameId = tree.frameTree.frame.id; + // enable Network / Page / Runtime + await Promise.all([ + chrome.send('Page.enable'), + chrome.send('Network.enable'), + chrome.send('Runtime.enable'), + ]); + // clear and disable cache + await chrome.send('Network.clearBrowserCache'); - debugCallback('frame tree', tree); + // disable cache + await chrome.send('Network.setCacheDisabled', { cacheDisabled: true }); - await client.send('Page.enable'); + await emulate(chrome, conditions); + await setCookies(chrome, cookies); - // these can be leveraged and commented in/out - client.on('Page.frameStartedLoading', evt => { - if (mainFrameId === evt.frameId) { - debugCallback('frameStartedLoading', evt); - } + // add performance observer script to eval + await chrome.send('Page.addScriptToEvaluateOnNewDocument', { + source: ` + self.__TBMarkerPromise = new Promise(resolve => { + const observer = new PerformanceObserver((list) => { + if (list.getEntriesByName('${marker}').length > 0) { + resolve(); + } + }); + observer.observe({ entryTypes: ["mark"] }); + });`, }); - client.on('Page.frameScheduledNavigation', evt => { - if (mainFrameId === evt.frameId) { - debugCallback('frameScheduledNavigation', evt); - } + await chrome.send('Tracing.start', { + transferMode: 'ReturnAsStream', + streamCompression: 'none', + traceConfig: { + recordMode: 'recordAsMuchAsPossible', + includedCategories: DEVTOOLS_CATEGORIES, + }, }); - client.on('Page.frameNavigated', evt => { - if (mainFrameId === evt.frame.id) { - debugCallback('frameNavigated', evt); - } + await chrome.send('Page.navigate', { url }); + + // eval + const evalPromise = chrome.send('Runtime.evaluate', { + expression: `__TBMarkerPromise`, + awaitPromise: true, }); - debugCallback(`starting trace`); + let timeoutId: NodeJS.Timeout; + const timeout = new Promise(reject => { + timeoutId = setTimeout(() => { + clearTimeout(timeoutId); + reject('Promise timed out after waiting for 10 seconds'); + }, 10000); + }); - await client.send('Tracing.start', { - categories: DEVTOOLS_CATEGORIES.join(','), - transferMode: 'ReturnAsStream', - streamCompression: 'none', + await Promise.race([evalPromise, timeout]).then(() => { + if (timeoutId) { + clearTimeout(timeoutId); + } }); - await Promise.all([ - client.until('Page.loadEventFired'), - client.send('Page.navigate', { url }), - ]); const [result] = await Promise.all([ - client.until('Tracing.tracingComplete'), - client.send('Tracing.end'), + chrome.until('Tracing.tracingComplete'), + chrome.send('Tracing.end'), ]); const handle = result.stream as string; - const file = fs.openSync(out, 'w'); + const file = openSync(traceFile, 'w'); + try { let read: Protocol.IO.ReadResponse; do { - read = await client.send('IO.read', { handle }); - fs.writeSync( + read = await chrome.send('IO.read', { handle }); + writeSync( file, read.base64Encoded ? Buffer.from(read.data, 'base64') @@ -94,10 +121,18 @@ export async function liveTrace( ); } while (!read.eof); } finally { - fs.closeSync(file); - await client.send('IO.close', { handle }); + closeSync(file); + await chrome.send('IO.close', { handle }); + traceJSON = readJSONSync(resolve(traceFile)); + await chrome.send('Page.close'); } + } catch (e) { + throw new Error(`Live Trace could not be captured. ${e}`); } finally { - await browser.dispose(); + if (browser) { + await browser.dispose(); + } } + + return traceJSON; } diff --git a/packages/tracerbench/src/trace/utils.ts b/packages/tracerbench/src/trace/utils.ts index 64a3ba9c..40692c4c 100644 --- a/packages/tracerbench/src/trace/utils.ts +++ b/packages/tracerbench/src/trace/utils.ts @@ -1,11 +1,12 @@ // tslint:disable:no-console import { HierarchyNode } from 'd3-hierarchy'; -import * as fs from 'fs'; +import * as fs from 'fs-extra'; import * as path from 'path'; import { ICpuProfileNode, Trace } from '../trace'; import { isRenderNode } from './render-events'; import { ModuleMatcher } from './module_matcher'; +import { dirSync } from 'tmp'; export interface ICategories { [key: string]: ILocator[]; @@ -192,3 +193,65 @@ export async function wait(dur: number) { setTimeout(resolve, dur); }); } + +export function getBrowserArgs(): string[] { + interface IViewOptions { + windowSize: { + width: number; + height: number; + }; + deviceScaleFactor: number; + userAgent: string | undefined; + } + + const tmpDir = dirSync({ + unsafeCleanup: true, + }); + + const options: IViewOptions = { + windowSize: { + width: 1280, + height: 800, + }, + deviceScaleFactor: 0, + userAgent: undefined, + }; + + return [ + `--crash-dumps-dir=${tmpDir.name}`, + '--disable-background-networking', + '--disable-background-timer-throttling', + '--disable-backgrounding-occluded-windows', + '--disable-component-extensions-with-background-pages', + '--disable-client-side-phishing-detection', + '--disable-default-apps', + '--disable-dev-shm-usage', + '--disable-domain-reliability', + '--disable-extensions', + '--disable-features=NetworkPrediction', + '--disable-features=site-per-process,TranslateUI,BlinkGenPropertyTrees', + '--disable-hang-monitor', + '--disable-ipc-flooding-protection', + '--disable-notifications', + '--disable-renderer-backgrounding', + '--disable-sync', + '--disable-translate', + '--disable-v8-idle-tasks', + `--device-scale-factor=${options.deviceScaleFactor}`, + '--ignore-certificate-errors-spki-list=uU0W87bsSHNaY+g/o8S9PmyxIgf92JepLWrPg5bYb+s=', + '--metrics-recording-only', + '--no-pings', + '--no-first-run', + '--no-default-browser-check', + '--no-experiments', + '--no-sandbox', + '--password-store=basic', + '--safebrowsing-disable-auto-update', + '--use-mock-keychain', + `--user-agent=${options.userAgent}`, + `--user-data-dir=${tmpDir.name}`, + '--v8-cache-options=none', + `--window-size=${options.windowSize.width},${options.windowSize.height}`, + '--headless', + ]; +}