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',
+ ];
+}