From 28b9d57f85ab3b168dc1eb6cea626f0d64ee6aca Mon Sep 17 00:00:00 2001 From: Westin Wrzesinski Date: Tue, 14 Mar 2023 09:35:54 -0500 Subject: [PATCH] chore: move to vitest (#72) * Move to vitest * Update License * Add .nvmrc * Update docs --- .github/workflows/main.yml | 2 +- .npmrc | 3 +- .nvmrc | 1 + LICENSE | 204 ++++++++++++++++++++++++++-- README.md | 14 +- flow.png | Bin 198961 -> 0 bytes karma.conf.js | 22 ---- package.json | 17 ++- src/index.test.js | 203 ++++++++++++++++++++++++++++ {test => src}/logger.test.js | 13 +- {test => src}/util.test.js | 4 +- test/index.js | 5 - test/test.js | 248 ----------------------------------- vite.config.js | 42 ++++++ 14 files changed, 474 insertions(+), 304 deletions(-) create mode 100644 .nvmrc delete mode 100644 flow.png delete mode 100644 karma.conf.js create mode 100644 src/index.test.js rename {test => src}/logger.test.js (96%) rename {test => src}/util.test.js (93%) delete mode 100644 test/index.js delete mode 100644 test/test.js create mode 100644 vite.config.js diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 80619fc..645e6e9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,5 +33,5 @@ jobs: - name: ▶️ Run build script run: npm run build - - name: ⬆️ Upload karma coverage report + - name: ⬆️ Upload coverage report uses: codecov/codecov-action@v2 diff --git a/.npmrc b/.npmrc index 69c1a8d..594b785 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,2 @@ registry=https://registry.npmjs.org/ -package-lock=false -save=false +package-lock=false \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..5edcff0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16 \ No newline at end of file diff --git a/LICENSE b/LICENSE index f0127a0..43981c1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,14 +1,190 @@ -/*───────────────────────────────────────────────────────────────────────────*\ -│ Copyright (C) 2016 PayPal │ -│ │ -│ │ -│ Licensed under the Apache License, Version 2.0 (the "License"); you may │ -│ not use this file except in compliance with the License. You may obtain │ -│ a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 │ -│ │ -│ Unless required by applicable law or agreed to in writing, software │ -│ distributed under the License is distributed on an "AS IS" BASIS, │ -│ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. │ -│ See the License for the specific language governing permissions and │ -│ limitations under the License. │ -\*───────────────────────────────────────────────────────────────────────────*/ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2023 PayPal + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index 84c25bd..a6ee671 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,10 @@ For example: Call this to attach general tracking information to the current page. This is useful if the data is not associated with a specific event, and will be sent to the server the next time the logs are flushed. +### `$logger.metric(, );` + +Queues a metric + ## Advanced ### `$logger.addMetaBuilder();` @@ -196,4 +200,12 @@ module.exports = { ## Data Flow -![Flow](/flow.png?raw=true) +```mermaid +flowchart TD + A[Client-Side Log statement] --> B[beaver-logger/client] + B[beaver-logger/client] --> C[beaver-logger/server] + C[beaver-logger/server] --> D[your-custom-logger] + D[your-customer-logger] --> E[Backend 1] + D[your-customer-logger] --> F[Backend 2] + G[Server-Side Log statement] --> D[your-custom-logger] +``` diff --git a/flow.png b/flow.png deleted file mode 100644 index 9b9ee2b5d2dadeb4cef6b1fae53b3a759c1b7ea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198961 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 G_kRHUdf0jZ diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index 659b9e4..0000000 --- a/karma.conf.js +++ /dev/null @@ -1,22 +0,0 @@ -/* @flow */ -/* eslint import/no-default-export: off */ - -import { getKarmaConfig } from "@krakenjs/karma-config-grumbler"; - -import { WEBPACK_CONFIG_TEST } from "./webpack.config"; - -export default function configKarma(karma: Object) { - const karmaConfig = getKarmaConfig(karma, { - basePath: __dirname, - webpack: WEBPACK_CONFIG_TEST, - // un-comment to show console.log() during tests - // client: { - // captureConsole: true, - // mocha: { - // bail: true, - // }, - // }, - }); - - karma.set(karmaConfig); -} diff --git a/package.json b/package.json index 4882117..c16d0d6 100644 --- a/package.json +++ b/package.json @@ -5,17 +5,17 @@ "main": "dist/beaver-logger.js", "scripts": { "setup": "npm install && npm run flow-typed", - "lint": "eslint src/ server/ test/ *.js", + "lint": "eslint src/ server/ *.js", "flow-typed": "rm -rf ./flow-typed && flow-typed install && flow-typed install express@4", "flow": "flow", - "karma": "cross-env NODE_ENV=test babel-node --plugins=transform-es2015-modules-commonjs ./node_modules/.bin/karma start", "babel": "babel src/ --out-dir dist/module", "babel-server": "babel ./server/*.js --ignore=node_modules --out-dir ./server", "babel-server-test": "babel ./server/*.js --ignore=node_modules --out-dir ./demo/beaver-logger", "webpack": "babel-node --config-file ./node_modules/@krakenjs/grumbler-scripts/config/.babelrc-node --plugins=transform-es2015-modules-commonjs ./node_modules/.bin/webpack --progress", "format": "prettier --write --ignore-unknown .", "format:check": "prettier --check .", - "test": "npm run format:check && npm run lint && npm run flow-typed && npm run flow && npm run karma", + "test:unit": "vitest run --coverage", + "test": "npm run format:check && npm run lint && npm run flow-typed && npm run flow && npm run test:unit", "build": "npm run test && npm run babel && npm run webpack", "clean": "rimraf dist coverage", "reinstall": "rimraf flow-typed && rimraf node_modules && npm install && flow-typed install", @@ -95,20 +95,23 @@ ], "readmeFilename": "README.md", "devDependencies": { + "@bunchtogether/vite-plugin-flow": "^1.0.2", "@commitlint/cli": "^16.2.1", "@commitlint/config-conventional": "^16.2.1", "@krakenjs/grumbler-scripts": "^8.0.4", - "@krakenjs/sync-browser-mocks": "^3.0.0", - "@storybook/expect": "^27.5.2-0", + "@vitest/coverage-c8": "^0.29.2", + "@vitest/ui": "^0.29.2", "cross-env": "^7.0.3", "flow-bin": "0.135.0", "flow-typed": "^3.8.0", "husky": "^7.0.4", "jest": "^29.3.1", + "jsdom": "^21.1.1", "lint-staged": "^12.4.0", - "mocha": "^4.0.0", "prettier": "^2.6.2", - "standard-version": "^9.3.2" + "standard-version": "^9.3.2", + "vite": "^4.1.4", + "vitest": "^0.29.2" }, "dependencies": { "@krakenjs/belter": "^2.0.0", diff --git a/src/index.test.js b/src/index.test.js new file mode 100644 index 0000000..72ebbbc --- /dev/null +++ b/src/index.test.js @@ -0,0 +1,203 @@ +// eslint-disable-next-line eslint-comments/disable-enable-pair +/* eslint-disable import/no-namespace */ +/* @flow */ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import * as belter from "@krakenjs/belter/src"; +import * as crossDomainUtils from "@krakenjs/cross-domain-utils/src"; + +import { Logger, getHTTPTransport } from "."; + +describe("beaver-logger custom transport tests", () => { + // TODO: this test suite isn't so great with what we need to mock. + // Consider making an integration test suite instead given all the reliance on mocking window + + beforeEach(() => { + // because we are mucking about window we need to ensure same domain checks pass + vi.spyOn(crossDomainUtils, "isSameDomain").mockReturnValue(true); + vi.spyOn(crossDomainUtils, "assertSameDomain").mockImplementation( + (win) => win + ); + }); + + it("should log something using XMLHttpRequest and a custom transport", async () => { + const XMLHttpRequest = vi.fn(); + + const win = { + ...window, + XMLHttpRequest, + }; + + const $logger = Logger({ + url: "/test/api/log", + transport: getHTTPTransport(win), + }); + + $logger.info("hello_world", { + foo: "bar", + bar: true, + }); + + await $logger.flush(); + expect(XMLHttpRequest).toHaveBeenCalledOnce(); + }); + + it("should log something using sendBeacon and a custom transport", async () => { + // must return something truthy see `http.js` for the short-circuit + const sendBeacon = vi.fn().mockReturnValue(true); + + // need to do this since `sendBeacon` is using window.navigator not the supplied window to transport, which we might need to update later after more investigation + // this use to pass in karma given it was a real browser but now in jsdom thats not provided + window.navigator.sendBeacon = () => true; + + const win = { + ...window, + navigator: { + ...window.navigator, + sendBeacon, + }, + }; + + const $logger = Logger({ + url: "/test/api/log", + enableSendBeacon: true, + transport: getHTTPTransport(win), + }); + + $logger.info("hello_world", { + foo: "bar", + bar: true, + }); + + await $logger.flush(); + expect(sendBeacon).toHaveBeenCalledOnce(); + }); +}); + +describe("beaver-logger default transport tests", () => { + let requestSpy = vi.fn(); + + beforeEach(() => { + requestSpy = vi.spyOn(belter, "request").mockImplementation((data) => { + const { url, method, json } = data; + if (url === "/test/api/log" && method === "POST") { + return json.events.some( + (event) => event.event === "hello_world" && event.level === "info" + ); + } + + return false; + }); + }); + + it("should log something and flush it to the buffer", async () => { + window.navigator.sendBeacon = undefined; // simulate IE 11 scenario + + const $logger = Logger({ + url: "/test/api/log", + }); + + $logger.info("hello_world", { + foo: "bar", + bar: true, + }); + + await $logger.flush(); + expect(requestSpy).toHaveBeenCalled(); + expect(requestSpy).toReturnWith(true); + }); + + it("should log something and flush it to the buffer using sendBeacon", async () => { + const $logger = Logger({ + url: "/test/api/log", + enableSendBeacon: true, + }); + + $logger.info("hello_world", { + foo: "bar", + bar: true, + }); + + let sendBeaconCalled = false; + window.navigator.sendBeacon = () => { + sendBeaconCalled = true; + }; + + await $logger.flush(); + + expect(requestSpy).toHaveBeenCalled(); + expect(requestSpy).toReturnWith(true); + expect(sendBeaconCalled).toBeTruthy(); + }); + + it("should not log using sendBeacon if custom headers are passed", async () => { + const $logger = Logger({ + url: "/test/api/log", + enableSendBeacon: true, + }); + + $logger.addHeaderBuilder(() => { + return { + "x-custom-header": "hunter2", + }; + }); + + $logger.info("hello_world", { + foo: "bar", + bar: true, + }); + + let sendBeaconCalled = false; + window.navigator.sendBeacon = () => { + sendBeaconCalled = true; + }; + + await $logger.flush(); + + expect(requestSpy).toHaveBeenCalled(); + expect(requestSpy).toReturnWith(true); + expect(sendBeaconCalled).toBeFalsy(); + }); +}); + +describe("beaver-logger Amplitude tests", () => { + it("should log something and flush it to the buffer using sendBeacon if Amplitude API key is present", async () => { + const $logger = Logger({ + url: "https://api2.amplitude.com/2/httpapi", + amplitudeApiKey: "test_key", + enableSendBeacon: true, + }); + + $logger.track({ + foo: "bar", + bar: true, + user_id: "abc123", + }); + + const requestSpy = vi + .spyOn(belter, "request") + .mockImplementation((data) => { + const { url, method, json } = data; + if ( + url === "https://api2.amplitude.com/2/httpapi" && + method === "POST" + ) { + return json.events.some( + (event) => event.foo === "bar" && event.user_id === "abc123" + ); + } + + return false; + }); + + let sendBeaconCalled = false; + + window.navigator.sendBeacon = () => { + sendBeaconCalled = true; + }; + + await $logger.flush(); + expect(sendBeaconCalled).toBeTruthy(); + expect(requestSpy).toHaveBeenCalled(); + expect(requestSpy).toReturnWith(true); + }); +}); diff --git a/test/logger.test.js b/src/logger.test.js similarity index 96% rename from test/logger.test.js rename to src/logger.test.js index 20b8f94..50bbdf0 100644 --- a/test/logger.test.js +++ b/src/logger.test.js @@ -1,9 +1,16 @@ /* eslint-disable flowtype/require-valid-file-annotation, eslint-comments/disable-enable-pair */ -import expect from "@storybook/expect"; -// https://jestjs.io/docs/expect +import { beforeEach, describe, expect, it, vi } from "vitest"; -import { Logger } from "../src"; +import { Logger } from "."; + +const XMLHttpRequestMock = vi.fn(() => ({ + open: vi.fn(), + send: vi.fn(), + setRequestHeader: vi.fn(), +})); + +vi.stubGlobal("XMLHttpRequest", XMLHttpRequestMock); let logger; let logBuf; diff --git a/test/util.test.js b/src/util.test.js similarity index 93% rename from test/util.test.js rename to src/util.test.js index 1e65070..256f455 100644 --- a/test/util.test.js +++ b/src/util.test.js @@ -1,6 +1,8 @@ /* @flow */ -import { extendIfDefined } from "../src/util"; +import { describe, it } from "vitest"; + +import { extendIfDefined } from "."; describe("util", () => { describe("extendIfDefined", () => { diff --git a/test/index.js b/test/index.js deleted file mode 100644 index d5806e7..0000000 --- a/test/index.js +++ /dev/null @@ -1,5 +0,0 @@ -/* @flow */ - -import "./test"; -import "./logger.test"; -import "./util.test"; diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 1a20b2a..0000000 --- a/test/test.js +++ /dev/null @@ -1,248 +0,0 @@ -/* @flow */ - -import { - $mockEndpoint, - patchXmlHttpRequest, -} from "@krakenjs/sync-browser-mocks/dist/sync-browser-mocks"; - -import { Logger, getHTTPTransport } from "../src"; - -patchXmlHttpRequest(); - -describe("beaver-logger tests", () => { - it("should log something and flush it to the buffer", () => { - window.navigator.sendBeacon = undefined; // simulate IE 11 scenario - - const $logger = Logger({ - url: "/test/api/log", - }); - - $logger.info("hello_world", { - foo: "bar", - bar: true, - }); - - const logEndpoint = $mockEndpoint.register({ - method: "POST", - uri: "/test/api/log", - handler: (req) => { - const hasLog = req.data.events.some( - (event) => event.event === "hello_world" && event.level === "info" - ); - - if (!hasLog) { - throw new Error("Expected posted payload to contain logged log"); - } - - return {}; - }, - }); - - logEndpoint.expectCalls(); - return $logger.flush().then(() => { - logEndpoint.done(); - }); - }); - - it("should log something and flush it to the buffer using sendBeacon", () => { - const $logger = Logger({ - url: "/test/api/log", - enableSendBeacon: true, - }); - - $logger.info("hello_world", { - foo: "bar", - bar: true, - }); - - const logEndpoint = $mockEndpoint.register({ - method: "POST", - uri: "/test/api/log", - handler: (req) => { - const hasLog = req.data.events.some( - (event) => event.event === "hello_world" && event.level === "info" - ); - - if (!hasLog) { - throw new Error("Expected posted payload to contain logged log"); - } - - return {}; - }, - }); - - let sendBeaconCalled = false; - - window.navigator.sendBeacon = () => { - sendBeaconCalled = true; - }; - - return $logger.flush().then(() => { - if (sendBeaconCalled) { - logEndpoint.done(); - } else { - throw new Error( - "Result from calling sendBeacon() should have been false." - ); - } - }); - }); - - it("should not log using sendBeacon if custom headers are passed", () => { - const $logger = Logger({ - url: "/test/api/log", - enableSendBeacon: true, - }); - $logger.addHeaderBuilder(() => { - return { - "x-custom-header": "hunter2", - }; - }); - - $logger.info("hello_world", { - foo: "bar", - bar: true, - }); - - const logEndpoint = $mockEndpoint.register({ - method: "POST", - uri: "/test/api/log", - handler: (req) => { - const hasLog = req.data.events.some( - (event) => event.event === "hello_world" && event.level === "info" - ); - - if (!hasLog) { - throw new Error("Expected posted payload to contain logged log"); - } - - return {}; - }, - }); - - let sendBeaconCalled = false; - - window.navigator.sendBeacon = () => { - sendBeaconCalled = true; - }; - - logEndpoint.expectCalls(); - return $logger.flush().then(() => { - if (sendBeaconCalled) { - throw new Error( - "Result from calling sendBeacon() should have been false." - ); - } else { - logEndpoint.done(); - } - }); - }); - - it("should log something using XMLHttpRequest and a custom transport", () => { - let XMLHttpRequestCalled = false; - - const win = { - ...window, - XMLHttpRequest: () => { - XMLHttpRequestCalled = true; - }, - }; - - const $logger = Logger({ - url: "/test/api/log", - transport: getHTTPTransport(win), - }); - - $logger.info("hello_world", { - foo: "bar", - bar: true, - }); - - return $logger.flush().then(() => { - if (!XMLHttpRequestCalled) { - throw new Error( - "Expected XMLHttpRequest on custom window to be called." - ); - } - }); - }); - - it("should log something using sendBeacon and a custom transport", () => { - let sendBeaconCalled = false; - - const win = { - ...window, - navigator: { - ...window.navigator, - sendBeacon: () => { - sendBeaconCalled = true; - }, - }, - }; - - const $logger = Logger({ - url: "/test/api/log", - enableSendBeacon: true, - transport: getHTTPTransport(win), - }); - - $logger.info("hello_world", { - foo: "bar", - bar: true, - }); - - return $logger.flush().then(() => { - if (!sendBeaconCalled) { - throw new Error("Expected sendBeacon on custom window to be called."); - } - }); - }); - - describe("Amplitude", () => { - it("should log something and flush it to the buffer using sendBeacon if Amplitude API key is present", () => { - const $logger = Logger({ - url: "https://api2.amplitude.com/2/httpapi", - amplitudeApiKey: "test_key", - enableSendBeacon: true, - }); - - $logger.track({ - foo: "bar", - bar: true, - user_id: "abc123", - }); - - const logEndpoint = $mockEndpoint.register({ - method: "POST", - uri: "https://api2.amplitude.com/2/httpapi", - handler: (req) => { - const hasLog = req.data.events.some( - (event) => event.foo === "bar" && event.user_id === "abc123" - ); - - if (!hasLog) { - throw new Error("Expected posted payload to contain logged log"); - } - - return {}; - }, - }); - - let sendBeaconCalled = false; - - window.navigator.sendBeacon = () => { - sendBeaconCalled = true; - }; - - return $logger.flush().then(() => { - if (sendBeaconCalled) { - logEndpoint.done(); - } else { - throw new Error( - "Result from calling sendBeacon() should have been false." - ); - } - }); - }); - }); -}); diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..8e619ac --- /dev/null +++ b/vite.config.js @@ -0,0 +1,42 @@ +/* eslint-disable eslint-comments/disable-enable-pair */ +/* eslint-disable spaced-comment */ +/* eslint-disable import/no-default-export */ +/// + +// Configure Vitest (https://vitest.dev/config/) + +/* @flow */ + +import { defineConfig } from "vite"; +import { flowPlugin, esbuildFlowPlugin } from "@bunchtogether/vite-plugin-flow"; + +const define = { + __DEBUG__: false, +}; + +// $FlowIssue +export default defineConfig({ + esbuild: { + define, + }, + define, + test: { + clearMocks: true, + coverage: { + reporter: ["text", "lcov"], + }, + environment: "jsdom", + setupFiles: [], + }, + optimizeDeps: { + esbuildOptions: { + plugins: [esbuildFlowPlugin()], + }, + }, + plugins: [ + // $FlowIssue + flowPlugin({ + exclude: "", + }), + ], +});