{"id":20731680,"url":"https://github.com/tapjs/node-test-example","last_synced_at":"2025-04-14T09:51:08.630Z","repository":{"id":197698991,"uuid":"692171164","full_name":"tapjs/node-test-example","owner":"tapjs","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-03T17:31:12.000Z","size":54,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-27T23:07:01.719Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tapjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-09-15T18:09:50.000Z","updated_at":"2025-01-04T12:37:47.000Z","dependencies_parsed_at":"2024-01-28T23:43:38.671Z","dependency_job_id":null,"html_url":"https://github.com/tapjs/node-test-example","commit_stats":null,"previous_names":["tapjs/node-test-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Fnode-test-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Fnode-test-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Fnode-test-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Fnode-test-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tapjs","download_url":"https://codeload.github.com/tapjs/node-test-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248859618,"owners_count":21173337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T05:16:24.087Z","updated_at":"2025-04-14T09:51:08.603Z","avatar_url":"https://github.com/tapjs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-test-example\n\nAn example showing `node:test`, `node --test`, `import 'tap'` and\n`tap run` being used together, and how they interoperate.\n\nThis contains a `test/tap.test.js` and `test/node.test.js`, which\nboth run essentially the same tests, one using\n[`tap`](https://node-tap.org) and the other using\n[`node:test`](https://nodejs.org/api/test.html)\n\n## The tests fail!\n\nI know. That's kinda the point.\n\n* `npm run test:node` Executes both test suite files with the\n  `node --test` runner.\n* `npm run test:tap` Execute both test suite files with the\n  `tap` runner.\n\nIn both cases, you can see that the results are pretty similar.\n\n## Differences\n\n- When running with the `tap` runner, they're almost identical.\n  The main thing is that the `node:test` doesn't provide\n  per-assertion reporting, so you only see a report on the test\n  block, and possibly the first failure, not all the assertions\n  within it.\n- When running with the `node --test` runner, the `tap` test\n  provides diffs and source callsite printing, while the\n  `node:test` test shows a `console.log()` of the thrown Error.\n\nOf course, the two runners produce very different output overall,\nbut they should both be pretty sensible.\n\nPersonally, I think the tap runner is a lot more useful, and\ncertainly if you write tests in TypeScript (or use tap's `import`\nmocking) it's nice to not have to specify the `--loader` and\n`--import` arguments explicitly.\n\nBut on the flip side, that fanciness comes with a cost. With\nTypeScript disabled, `tap` runs these two tests in about 450ms on\nmy system (350ms or so with coverage disabled), while `node\n--test` does it in around 170ms. In both cases, the\n`test/tap.test.js` test takes around 150ms to run, and the\n`test/node.test.js` takes under 10ms.\n\nReal world tests doing complicated stuff would show a less\ndramatic difference, so this is in no way a representative\nbenchmark, but as always, performance and features are\nfundamentally opposed, because features require running code, and\nnot running code is always faster.\n\nThe goal of the `node:test` interoperability in node-tap is to\nmake it possible for you to get the best of both worlds. You\ncould have part of your test suite written as `node:test` tests,\nif they don't need `t.mockImport` or TypeScript, and other tests\nwritten in `tap`.\n\n## Coverage\n\nThe `test:mix` and `test:cross` show using the `node --test` and\n`tap` runners so that they dump coverage into the same folder.\nThen you can use `tap report` to report on it.\n\n## Enough talk! Show the output!\n\nGitHub strips colors from README.md files. [A more representative\nexample with colors can be found on the node-tap\nwebsite.](https://node-tap.org/node-test-interop/#enough-talk!-show-the-output!)\n\nRunning with `tap`:\n\n\u003cpre style=\"color:#eeeeee;background:#222222\"\u003e\u003cspan style=\"font-weight:bold;color:#ffffff;background:#f00\"\u003e FAIL \u003c/span\u003e test/node.test.js \u003cspan style=\"color:#f00;background:#222222\"\u003e2 failed\u003c/span\u003e of \u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003e4\u003c/span\u003e \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e6.834ms\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; uhoh, this one throws\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer\n\u003cspan style=\"font-weight:bold;color:#ffffff;background:#f00\"\u003e FAIL \u003c/span\u003e test/tap.test.js \u003cspan style=\"color:#f00;background:#222222\"\u003e3 failed\u003c/span\u003e of \u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003e18\u003c/span\u003e \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e340ms\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; uhoh, this one throws \u0026gt; Invalid time value \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003elib/index.mjs:11:43\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer \u0026gt; should be equal \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003etest/tap.test.js:35:7\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer \u0026gt; should be equal \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003etest/tap.test.js:37:7\u003c/span\u003e\n                                    \n\u003cspan style=\"color:#eeeeee;background:#ffffff\"\u003e                       \u003c/span\u003e                     \n\u003cspan style=\"font-weight:bold;color:#000;background:#ffffff\"\u003e  \u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e🌈\u003c/span\u003e\u003c/span\u003e TEST COMPLETE \u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e🌈\u003c/span\u003e\u003c/span\u003e  \u003c/span\u003e                                                                     \n\u003cspan style=\"color:#eeeeee;background:#ffffff\"\u003e                       \u003c/span\u003e                                                     \n                                                                             \n\u003cspan style=\"font-weight:bold;color:#ffffff;background:#f00\"\u003e FAIL \u003c/span\u003e test/node.test.js \u003cspan style=\"color:#f00;background:#222222\"\u003e2 failed\u003c/span\u003e of \u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003e4\u003c/span\u003e \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e6.834ms\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; uhoh, this one throws\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003etest/node.test.js                                                       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e20 \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                   \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e21 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                     \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e22 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003etest\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'suite of tests that fail'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e,\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003easync\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e t =\u0026gt; \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e{\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e23 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eawait\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003etest\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'uhoh, this one throws'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e,\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e{\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                      \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e24 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003ethrower\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e0\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1970-01-01T00:00:00.000Z'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e             \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e25 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003ethrower\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1234567891011\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2009-02-13T23:31:31.011Z'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e26 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003ethrower\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e({}),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'Invalid Date'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e27 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003eerror origin: lib/index.mjs                                  \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e 8 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e 9 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// This is a function that throws, to show how both\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e10 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// handle errors.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e11 \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eexport\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003econst\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e thrower = \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003enew\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e Date\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e).\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003etoISOString\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e   \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e               \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e12 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e13 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// one that fails, to show how failures are handled\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e14 \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eexport\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003econst\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e failer = \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; String\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en + \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eerror:\u003c/span\u003e Invalid time value\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ecode:\u003c/span\u003e ERR_TEST_FAILURE\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003efailureType: testCodeFailure\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ename: RangeError\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eDate.toISOString (\u0026lt;anonymous\u0026gt;)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ethrower (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003elib/index.mjs\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:11:43)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTestContext.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/node.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:26:18)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTestContext.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/node.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:23:11)\u003c/span\u003e\n\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003etest/node.test.js                                                       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e26 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003ethrower\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e({}),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'Invalid Date'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e27 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e28 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                     \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e29 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eawait\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003etest\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'failer'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e,\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e{\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                     \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e30 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                     \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e31 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e-\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                    \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e32 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert string numbers to Number, but doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e33 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                   \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003eerror origin: test/node.test.js                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e30 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                     \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e31 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e-\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                    \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e32 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert string numbers to Number, but doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e33 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                   \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e                                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e34 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert non-numerics to 0, but it doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e           \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e35 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    assert\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e({}),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                    \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e36 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e37 \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                   \u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e--- expected   \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+++ actual     \u003c/span\u003e\n    \u003cspan style=\"font-weight:bold;color:#759eef;background:#222222\"\u003e@@ -1,1 +1,1 @@\u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e-\u0026quot;2\u0026quot;           \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+\u0026quot;11\u0026quot;          \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eerror:\u003c/span\u003e \u0026quot;'11' == '2'\u0026quot;\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ecode:\u003c/span\u003e ERR_ASSERTION\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003efailureType: testCodeFailure\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ename: AssertionError\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eoperator: ==\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTestContext.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/node.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:33:12)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTestContext.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/node.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:29:11)\u003c/span\u003e\n\n\u003cspan style=\"font-weight:bold;color:#ffffff;background:#f00\"\u003e FAIL \u003c/span\u003e test/tap.test.js \u003cspan style=\"color:#f00;background:#222222\"\u003e3 failed\u003c/span\u003e of \u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003e18\u003c/span\u003e \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e340ms\u003c/span\u003e\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; uhoh, this one throws \u0026gt; Invalid time value\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003elib/index.mjs                                                \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e 8 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e 9 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// This is a function that throws, to show how both\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e10 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// handle errors.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e11 \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eexport\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003econst\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e thrower = \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003enew\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e Date\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e).\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003etoISOString\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e   \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e               \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e12 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e13 \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// one that fails, to show how failures are handled\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e14 \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003eexport\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#79c0ff;background:#1c1c1c\"\u003econst\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e failer = \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e =\u0026gt; String\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003en + \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003etype: RangeError\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003etapCaught: testFunctionThrow\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eDate.toISOString (\u0026lt;anonymous\u0026gt;)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ethrower (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003elib/index.mjs\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:11:43)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTest.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:27:13)\u003c/span\u003e\n\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer \u0026gt; should be equal\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003etest/tap.test.js                                                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e32 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e33 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e-\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e1\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'0'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e34 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert string numbers to Number, but doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e35 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                        \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e                                                              \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e36 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert non-numerics to 0, but it doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e           \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e37 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e({}),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                         \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e38 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eend\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e39 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e--- expected   \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+++ actual     \u003c/span\u003e\n    \u003cspan style=\"font-weight:bold;color:#759eef;background:#222222\"\u003e@@ -1,1 +1,1 @@\u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e-2             \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+11            \u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ecompare: ===\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTest.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:35:7)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTest.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:31:5)\u003c/span\u003e\n    \u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:23:3\u003c/span\u003e\n\n \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suite of tests that fail \u0026gt; failer \u0026gt; should be equal\n    \u003cspan style=\"color:#b2b2b2;background:#1c1c1c\"\u003etest/tap.test.js                                                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e34 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert string numbers to Number, but doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e       \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e35 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'2'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                        \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e36 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    \u003c/span\u003e\u003cspan style=\"font-style:italic;color:#d75fff;background:#1c1c1c\"\u003e// expect to convert non-numerics to 0, but it doesn't\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e           \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e37 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eequal\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e(\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003efailer\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e({}),\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e \u003c/span\u003e\u003cspan style=\"color:#87d75f;background:#1c1c1c\"\u003e'1'\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e)\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                         \u003c/span\u003e\n    \u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e━━━━━━━━━\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#f00;background:#1c1c1c\"\u003e┛\u003c/span\u003e\u003cspan style=\"color:#f00;background:#1c1c1c\"\u003e                                                              \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e38 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e    t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eend\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                          \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e39 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  \u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e})\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e40 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                                     \u003c/span\u003e\n    \u003cspan style=\"color:#8fa5d1;background:#1c1c1c\"\u003e41 \u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e  t\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003eend\u003c/span\u003e\u003cspan style=\"color:#93cdff;background:#1c1c1c\"\u003e()\u003c/span\u003e\u003cspan style=\"color:#d0d0d0;background:#1c1c1c\"\u003e                                                            \u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e--- expected     \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+++ actual       \u003c/span\u003e\n    \u003cspan style=\"font-weight:bold;color:#759eef;background:#222222\"\u003e@@ -1,1 +1,1 @@\u003c/span\u003e\u003cspan style=\"font-weight:bold;color:#e599ff;background:#222222\"\u003e  \u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e-1               \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+[object Object]1\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003ecompare: ===\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTest.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:37:7)\u003c/span\u003e\n    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003eTest.\u0026lt;anonymous\u0026gt; (\u003c/span\u003e\u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:31:5)\u003c/span\u003e\n    \u003cspan style=\"color:#ff6;background:#222222\"\u003etest/tap.test.js\u003c/span\u003e\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e:23:3\u003c/span\u003e\n\n\u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003eAsserts:\u003c/span\u003e  \u003cspan style=\"color:#090;background:#222222\"\u003e17 pass\u003c/span\u003e  \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e5 fail\u003c/span\u003e  \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e22 of 22 complete\u003c/span\u003e\n\u003cspan style=\"font-weight:bold;color:#eeeeee;background:#222222\"\u003eSuites:\u003c/span\u003e    \u003cspan style=\"color:#090;background:#222222\"\u003e0 pass\u003c/span\u003e  \u003cspan style=\"font-weight:bold;color:#f00;background:#222222\"\u003e2 fail\u003c/span\u003e    \u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e2 of 2 complete\u003c/span\u003e\n\n\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e# { total: 22, pass: 17, fail: 5 }\u003c/span\u003e\n\u003cspan style=\"color:#b2b2b2;background:#222222\"\u003e# time=459.924ms\u003c/span\u003e\u003c/pre\u003e\n\nRunning with `node --test`:\n\n\u003cpre style=\"color:#eeeeee;background:#222222\"\u003e\u003cspan style=\"color:#090;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✔\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e add \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.569917ms)\u003c/span\u003e\n\u003cspan style=\"color:#090;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✔\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e stringOrNull \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.063833ms)\u003c/span\u003e\n\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e▶\u003c/span\u003e\u003c/span\u003e suite of tests that fail\n  \u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e uhoh, this one throws \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.910959ms)\u003c/span\u003e\n    RangeError [Error]: Invalid time value\n        at Date.toISOString (\u0026lt;anonymous\u0026gt;)\n        at thrower \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003elib/index.mjs:11:43\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n        at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:26:18\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.start (node:internal/test_runner/test:542:17)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at TestContext.test (node:internal/test_runner/test:167:20)\u003c/span\u003e\n        at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:23:11\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n\n  \u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e failer \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.532708ms)\u003c/span\u003e\n    AssertionError [ERR_ASSERTION]: '11' == '2'\n        at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:33:12\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.start (node:internal/test_runner/test:542:17)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at TestContext.test (node:internal/test_runner/test:167:20)\u003c/span\u003e\n        at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:29:11\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at async Test.run (node:internal/test_runner/test:632:9)\u003c/span\u003e\n    \u003cspan style=\"color:#666;background:#222222\"\u003e    at async Test.processPendingSubtests (node:internal/test_runner/test:374:7)\u003c/span\u003e {\n      generatedMessage: \u003cspan style=\"color:#ff0;background:#222222\"\u003etrue\u003c/span\u003e,\n      code: \u003cspan style=\"color:#090;background:#222222\"\u003e'ERR_ASSERTION'\u003c/span\u003e,\n      actual: \u003cspan style=\"color:#090;background:#222222\"\u003e'11'\u003c/span\u003e,\n      expected: \u003cspan style=\"color:#090;background:#222222\"\u003e'2'\u003c/span\u003e,\n      operator: \u003cspan style=\"color:#090;background:#222222\"\u003e'=='\u003c/span\u003e\n    }\n\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e▶\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e \u003c/span\u003esuite of tests that fail \u003cspan style=\"color:#666;background:#222222\"\u003e(1.684292ms)\u003c/span\u003e\n\n\u003cspan style=\"color:#090;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✔\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e add \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(1.774ms)\u003c/span\u003e\n\u003cspan style=\"color:#090;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✔\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e stringOrNull \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(1.091ms)\u003c/span\u003e\n\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e▶\u003c/span\u003e\u003c/span\u003e suite of tests that fail\n  \u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e uhoh, this one throws \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(10.016ms)\u003c/span\u003e\n    Error: Invalid time value\n    | // This is a function that throws, to show how both\n    | // handle errors.\n    | export const thrower = (n) =\u0026gt; new Date(n).toISOString()\n    | ------------------------------------------^\n    | \n    | // one that fails, to show how failures are handled\n        at Date.toISOString (\u0026lt;anonymous\u0026gt;)\n        at thrower \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003elib/index.mjs:11:43\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n        at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:27:13\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e {\n      type: \u003cspan style=\"color:#090;background:#222222\"\u003e'RangeError'\u003c/span\u003e,\n      tapCaught: \u003cspan style=\"color:#090;background:#222222\"\u003e'testFunctionThrow'\u003c/span\u003e\n    }\n\n  \u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e failer \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(3.676ms)\u003c/span\u003e\n    Error: should be equal\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e--- expected                                                               \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+++ actual                                                                 \u003c/span\u003e\n    \u003cspan style=\"color:#759eef;background:#222222\"\u003e@@ -1,1 +1,1 @@                                                            \u003c/span\u003e\n    \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e-2                                                                         \u003c/span\u003e\n    \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+11                                                                        \u003c/span\u003e\n    |     t.equal(failer(-1), '0')\n    |     // expect to convert string numbers to Number, but doesn't\n    |     t.equal(failer('1'), '2')\n    | ------^\n    |     // expect to convert non-numerics to 0, but it doesn't\n    |     t.equal(failer({}), '1')\n        at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:35:7\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n        at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:31:5\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n        at \u003cspan style=\"color:#666;background:#222222\"\u003e/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:23:3 {\n      compare: \u003cspan style=\"color:#090;background:#222222\"\u003e'==='\u003c/span\u003e\n    }\n\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e▶\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e \u003c/span\u003esuite of tests that fail \u003cspan style=\"color:#666;background:#222222\"\u003e(17.681ms)\u003c/span\u003e\n\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e tests 9\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e suites 1\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e pass 4\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e fail 5\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e cancelled 0\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e skipped 0\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e todo 0\u003c/span\u003e\n\u003cspan style=\"color:#00f;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003eℹ\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e duration_ms 160.809375\u003c/span\u003e\n\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e failing tests:\u003c/span\u003e\n\ntest at file:/Users/isaacs/dev/tapjs/node-test-example/test/node.test.js:23:11\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e uhoh, this one throws \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.910959ms)\u003c/span\u003e\n  RangeError [Error]: Invalid time value\n      at Date.toISOString (\u0026lt;anonymous\u0026gt;)\n      at thrower \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003elib/index.mjs:11:43\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n      at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:26:18\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.start (node:internal/test_runner/test:542:17)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at TestContext.test (node:internal/test_runner/test:167:20)\u003c/span\u003e\n      at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:23:11\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n\ntest at file:/Users/isaacs/dev/tapjs/node-test-example/test/node.test.js:29:11\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e failer \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(0.532708ms)\u003c/span\u003e\n  AssertionError [ERR_ASSERTION]: '11' == '2'\n      at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:33:12\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.runInAsyncScope (node:async_hooks:206:9)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.run (node:internal/test_runner/test:631:25)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at Test.start (node:internal/test_runner/test:542:17)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at TestContext.test (node:internal/test_runner/test:167:20)\u003c/span\u003e\n      at TestContext.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(file:///Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/node.test.js:29:11\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at async Test.run (node:internal/test_runner/test:632:9)\u003c/span\u003e\n  \u003cspan style=\"color:#666;background:#222222\"\u003e    at async Test.processPendingSubtests (node:internal/test_runner/test:374:7)\u003c/span\u003e {\n    generatedMessage: \u003cspan style=\"color:#ff0;background:#222222\"\u003etrue\u003c/span\u003e,\n    code: \u003cspan style=\"color:#090;background:#222222\"\u003e'ERR_ASSERTION'\u003c/span\u003e,\n    actual: \u003cspan style=\"color:#090;background:#222222\"\u003e'11'\u003c/span\u003e,\n    expected: \u003cspan style=\"color:#090;background:#222222\"\u003e'2'\u003c/span\u003e,\n    operator: \u003cspan style=\"color:#090;background:#222222\"\u003e'=='\u003c/span\u003e\n  }\n\ntest at test/tap.test.js:24:5\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e uhoh, this one throws \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(10.016ms)\u003c/span\u003e\n  Error: Invalid time value\n  | // This is a function that throws, to show how both\n  | // handle errors.\n  | export const thrower = (n) =\u0026gt; new Date(n).toISOString()\n  | ------------------------------------------^\n  | \n  | // one that fails, to show how failures are handled\n      at Date.toISOString (\u0026lt;anonymous\u0026gt;)\n      at thrower \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003elib/index.mjs:11:43\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n      at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:27:13\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e {\n    type: \u003cspan style=\"color:#090;background:#222222\"\u003e'RangeError'\u003c/span\u003e,\n    tapCaught: \u003cspan style=\"color:#090;background:#222222\"\u003e'testFunctionThrow'\u003c/span\u003e\n  }\n\ntest at test/tap.test.js:31:5\n\u003cspan style=\"color:#f00;background:#222222\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e\u003cspan style=\"position:relaive;padding:0 2.25ex 0 0\"\u003e\u003cspan style=\"position:absolute;height:2.25ex;width:2.25ex;overflow:hidden;\"\u003e✖\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e failer \u003c/span\u003e\u003cspan style=\"color:#666;background:#222222\"\u003e(3.676ms)\u003c/span\u003e\n  Error: should be equal\n  \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e--- expected                                                               \u003c/span\u003e\n  \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+++ actual                                                                 \u003c/span\u003e\n  \u003cspan style=\"color:#759eef;background:#222222\"\u003e@@ -1,1 +1,1 @@                                                            \u003c/span\u003e\n  \u003cspan style=\"color:#ffe5f1;background:#ac3ea3\"\u003e-2                                                                         \u003c/span\u003e\n  \u003cspan style=\"color:#f2ffe5;background:#3a7500\"\u003e+11                                                                        \u003c/span\u003e\n  |     t.equal(failer(-1), '0')\n  |     // expect to convert string numbers to Number, but doesn't\n  |     t.equal(failer('1'), '2')\n  | ------^\n  |     // expect to convert non-numerics to 0, but it doesn't\n  |     t.equal(failer({}), '1')\n      at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:35:7\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n      at Test.\u0026lt;anonymous\u0026gt; \u003cspan style=\"color:#666;background:#222222\"\u003e(/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:31:5\u003cspan style=\"color:#666;background:#222222\"\u003e)\u003c/span\u003e\n      at \u003cspan style=\"color:#666;background:#222222\"\u003e/Users/isaacs/dev/tapjs/node-test-example/\u003c/span\u003etest/tap.test.js:23:3 {\n    compare: \u003cspan style=\"color:#090;background:#222222\"\u003e'==='\u003c/span\u003e\n  }\n\u003c/pre\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapjs%2Fnode-test-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftapjs%2Fnode-test-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapjs%2Fnode-test-example/lists"}