From a66364c656c135524d2bf07450847d6d231afbf1 Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Mon, 27 Jul 2020 21:26:12 +0200 Subject: [PATCH 1/3] tests are added --- examples/1.png | Bin 53818 -> 0 bytes examples/2.png | Bin 53826 -> 0 bytes examples/example.spec.ts | 60 ----- lib/visualRegressionTracker.spec.ts | 341 ++++++++++++++++++++++++++++ lib/visualRegressionTracker.ts | 61 +++-- 5 files changed, 380 insertions(+), 82 deletions(-) delete mode 100644 examples/1.png delete mode 100644 examples/2.png delete mode 100644 examples/example.spec.ts create mode 100644 lib/visualRegressionTracker.spec.ts diff --git a/examples/1.png b/examples/1.png deleted file mode 100644 index 84ba20726be606fb2af210cba598bc37e76764d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53818 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 z 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 U{WyCxWaC}2=h7nCLa*Qb9}Y0V%K!iX diff --git a/examples/2.png b/examples/2.png deleted file mode 100644 index f55840379a3e581a66b7e1f08bc345cd61cfd0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53826 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 diff --git a/examples/example.spec.ts b/examples/example.spec.ts deleted file mode 100644 index c92b127..0000000 --- a/examples/example.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { VisualRegressionTracker, Config } from "../lib"; -import { readFileSync } from "fs"; - -describe("asd", () => { - const config: Config = { - apiUrl: "http://localhost:4200", - branchName: "master", - project: "Test", - apiKey: "RE85600GVC4A2WHZYR4Z4HA1NFDT", - }; - const vrt = new VisualRegressionTracker(config); - - it("test 2", async () => { - const testResult = await vrt.track({ - name: "Example 2", - // buildId: buildId, - imageBase64: new Buffer(readFileSync("examples/1.png")).toString( - "base64" - ), - os: "Windows", - browser: "Chrome", - viewport: "800x600", - device: "PC", - diffTollerancePercent: 0, - }); - - console.log(testResult); - }); - - it("test 1", async () => { - const testResult = await vrt.track({ - name: "Example 1", - imageBase64: new Buffer(readFileSync("examples/2.png")).toString( - "base64" - ), - os: "Windows", - // browser: "Chrome", - // viewport: "800x600", - // device: "PC", - }); - - console.log(testResult); - }); - - it("test 1 chrome", async () => { - const testResult = await vrt.track({ - name: "Example 1", - imageBase64: new Buffer(readFileSync("examples/1.png")).toString( - "base64" - ), - os: "Windows", - browser: "Chrome", - // viewport: "800x600", - // device: "PC", - diffTollerancePercent: 10.5, - }); - - console.log(testResult); - }); -}); diff --git a/lib/visualRegressionTracker.spec.ts b/lib/visualRegressionTracker.spec.ts new file mode 100644 index 0000000..b64577a --- /dev/null +++ b/lib/visualRegressionTracker.spec.ts @@ -0,0 +1,341 @@ +import { VisualRegressionTracker } from "./visualRegressionTracker"; +import { Config, Build, TestRun, TestRunResult, TestRunStatus } from "./types"; +import { mocked } from "ts-jest/utils"; +import axios, { AxiosError, AxiosResponse } from "axios"; + +jest.mock("axios"); +const mockedAxios = mocked(axios, true); + +describe("VisualRegressionTracker", () => { + let vrt: VisualRegressionTracker; + const config: Config = { + apiUrl: "http://localhost:4200", + branchName: "develop", + project: "Default project", + apiKey: "CPKVK4JNK24NVNPNGVFQ853HXXEG", + }; + + beforeEach(async () => { + vrt = new VisualRegressionTracker(config); + }); + + afterEach(async () => { + mockedAxios.post.mockReset(); + }); + + describe("track", () => { + const testRun: TestRun = { + name: "name", + imageBase64: "iamge", + os: "os", + device: "device", + viewport: "viewport", + browser: "browser", + }; + + it("should track success", async () => { + const testRunResult: TestRunResult = { + url: "url", + status: TestRunStatus.ok, + pixelMisMatchCount: 12, + diffPercent: 0.12, + diffTollerancePercent: 0, + }; + vrt["startBuild"] = jest.fn(); + vrt["submitTestResult"] = jest.fn().mockResolvedValueOnce(testRunResult); + + await vrt.track(testRun); + + expect(vrt["startBuild"]).toHaveBeenCalled(); + expect(vrt["submitTestResult"]).toHaveBeenCalledWith(testRun); + }); + + it("should track no baseline", async () => { + const testRunResult: TestRunResult = { + url: "url", + status: TestRunStatus.new, + pixelMisMatchCount: 12, + diffPercent: 0.12, + diffTollerancePercent: 0, + }; + vrt["startBuild"] = jest.fn(); + vrt["submitTestResult"] = jest.fn().mockResolvedValueOnce(testRunResult); + + await expect(vrt.track(testRun)).rejects.toThrowError( + new Error("No baseline: " + testRunResult.url) + ); + }); + + it("should track difference", async () => { + const testRunResult: TestRunResult = { + url: "url", + status: TestRunStatus.unresolved, + pixelMisMatchCount: 12, + diffPercent: 0.12, + diffTollerancePercent: 0, + }; + vrt["startBuild"] = jest.fn(); + vrt["submitTestResult"] = jest.fn().mockResolvedValueOnce(testRunResult); + + await expect(vrt.track(testRun)).rejects.toThrowError( + new Error("Difference found: " + testRunResult.url) + ); + }); + }); + + describe("startBuild", () => { + test("shouldStartBuild", async () => { + const buildId = "1312"; + const projectId = "asd"; + const build: Build = { + id: buildId, + projectId: projectId, + }; + mockedAxios.post.mockResolvedValueOnce({ data: build }); + + await vrt["startBuild"](); + + expect(mockedAxios.post).toHaveBeenCalledWith( + `${config.apiUrl}/builds`, + { + branchName: config.branchName, + project: config.project, + }, + { + headers: { + apiKey: config.apiKey, + }, + } + ); + expect(vrt.buildId).toBe(buildId); + expect(vrt.projectId).toBe(projectId); + }); + + test("should throw if no build Id", async () => { + const build = { + id: null, + projectId: "projectId", + }; + mockedAxios.post.mockResolvedValueOnce({ data: build }); + + await expect(vrt["startBuild"]()).rejects.toThrowError( + new Error("Build id is not defined") + ); + }); + + test("should throw if no project Id", async () => { + const build = { + id: "asd", + projectId: null, + }; + mockedAxios.post.mockResolvedValueOnce({ data: build }); + + await expect(vrt["startBuild"]()).rejects.toThrowError( + new Error("Project id is not defined") + ); + }); + + test("should handle exception", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "", + message: "", + response: { + status: 404, + data: {}, + statusText: "Not found", + headers: {}, + config: {}, + }, + }; + const handleExceptionMock = jest.fn(); + vrt["handleException"] = handleExceptionMock; + mockedAxios.post.mockRejectedValueOnce(error); + + try { + await vrt["startBuild"](); + } catch {} + + expect(handleExceptionMock).toHaveBeenCalledWith(error); + }); + }); + + describe("submitTestResults", () => { + it("should submit test run", async () => { + const testRunResult: TestRunResult = { + url: "url", + status: TestRunStatus.unresolved, + pixelMisMatchCount: 12, + diffPercent: 0.12, + diffTollerancePercent: 0, + }; + const testRun: TestRun = { + name: "name", + imageBase64: "image", + os: "os", + device: "device", + viewport: "viewport", + browser: "browser", + }; + const buildId = "1312"; + const projectId = "asd"; + vrt.buildId = buildId; + vrt.projectId = projectId; + mockedAxios.post.mockResolvedValueOnce({ data: testRunResult }); + + const result = await vrt["submitTestResult"](testRun); + + expect(result).toBe(testRunResult); + expect(mockedAxios.post).toHaveBeenCalledWith( + `${config.apiUrl}/test-runs`, + { + buildId: buildId, + projectId: projectId, + branchName: config.branchName, + name: testRun.name, + imageBase64: testRun.imageBase64, + os: testRun.os, + device: testRun.device, + viewport: testRun.viewport, + browser: testRun.browser, + }, + { + headers: { + apiKey: config.apiKey, + }, + } + ); + }); + + it("should handle exception", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "", + message: "", + response: { + status: 404, + data: {}, + statusText: "Not found", + headers: {}, + config: {}, + }, + }; + const handleExceptionMock = jest.fn(); + vrt["handleException"] = handleExceptionMock; + mockedAxios.post.mockRejectedValueOnce(error); + + try { + await vrt["submitTestResult"]({ + name: "name", + imageBase64: "image", + }); + } catch {} + + expect(handleExceptionMock).toHaveBeenCalledWith(error); + }); + }); + + test("handleResponse", async () => { + const build: Build = { + id: "id", + projectId: "projectId", + }; + const response: AxiosResponse = { + data: build, + status: 201, + statusText: "Created", + config: {}, + headers: {}, + }; + + const result = await vrt["handleResponse"](response); + + expect(result).toBe(build); + }); + + describe("handleException", () => { + it("error 401", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "", + message: "", + response: { + status: 401, + data: {}, + statusText: "", + headers: {}, + config: {}, + }, + }; + + await expect(vrt["handleException"](error)).rejects.toBe("Unauthorized"); + }); + + it("error 403", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "", + message: "", + response: { + status: 403, + data: {}, + statusText: "", + headers: {}, + config: {}, + }, + }; + + await expect(vrt["handleException"](error)).rejects.toBe( + "Api key not authenticated" + ); + }); + + it("error 404", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "", + message: "", + response: { + status: 404, + data: {}, + statusText: "", + headers: {}, + config: {}, + }, + }; + + await expect(vrt["handleException"](error)).rejects.toBe( + "Project not found" + ); + }); + + it("unknown", async () => { + const error: AxiosError = { + isAxiosError: true, + config: {}, + toJSON: jest.fn(), + name: "asdas", + message: "Unknown error", + response: { + status: 500, + data: {}, + statusText: "Internal exception", + headers: {}, + config: {}, + }, + }; + + await expect(vrt["handleException"](error)).rejects.toBe(error.message); + }); + }); +}); diff --git a/lib/visualRegressionTracker.ts b/lib/visualRegressionTracker.ts index 0ab99bf..f20abf7 100644 --- a/lib/visualRegressionTracker.ts +++ b/lib/visualRegressionTracker.ts @@ -1,5 +1,5 @@ import { Config, Build, TestRun, TestRunResult, TestRunStatus } from "./types"; -import axios, { AxiosRequestConfig } from "axios"; +import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from "axios"; export class VisualRegressionTracker { config: Config; @@ -18,23 +18,26 @@ export class VisualRegressionTracker { private async startBuild() { if (!this.buildId) { - console.log("Starting new build"); const data = { branchName: this.config.branchName, project: this.config.project, }; - const build = await axios - .post(`${this.config.apiUrl}/builds`, data, this.axiosConfig) - .then(function (response) { - // handle success - return response.data; - }) - .catch(function (error) { - // handle error - return Promise.reject(error); - }); - this.buildId = build.id; - this.projectId = build.projectId; + + const build: Build = await axios + .post(`${this.config.apiUrl}/builds`, data, this.axiosConfig) + .then(this.handleResponse) + .catch(this.handleException); + + if (build.id) { + this.buildId = build.id; + } else { + throw new Error("Build id is not defined"); + } + if (build.projectId) { + this.projectId = build.projectId; + } else { + throw new Error("Project id is not defined"); + } } } @@ -45,16 +48,30 @@ export class VisualRegressionTracker { branchName: this.config.branchName, ...test, }; + return axios .post(`${this.config.apiUrl}/test-runs`, data, this.axiosConfig) - .then(function (response) { - // handle success - return response.data; - }) - .catch(function (error) { - // handle error - return Promise.reject(error); - }); + .then(this.handleResponse) + .catch(this.handleException); + } + + private async handleResponse(response: AxiosResponse) { + return response.data; + } + + private async handleException(error: AxiosError) { + const status = error.response?.status; + if (status === 401) { + return Promise.reject("Unauthorized"); + } + if (status === 403) { + return Promise.reject("Api key not authenticated"); + } + if (status === 404) { + return Promise.reject("Project not found"); + } + + return Promise.reject(error.message); } async track(test: TestRun) { From 3dc8f8a26e881bde9b3e460fd94eab12d2506f96 Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Mon, 27 Jul 2020 21:32:43 +0200 Subject: [PATCH 2/3] code style updated --- .vscode/launch.json | 68 ++++++++++++++++++++------------------ jest.config.js | 6 ++-- lib/index.ts | 4 +-- lib/types/index.ts | 10 +++--- lib/types/testRunStatus.ts | 8 ++--- 5 files changed, 49 insertions(+), 47 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 5418960..40765a9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,35 +1,37 @@ { - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Jest All", - "program": "${workspaceFolder}/node_modules/.bin/jest", - "args": ["--runInBand"], - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest", - } - }, - { - "type": "node", - "request": "launch", - "name": "Jest Current File", - "program": "${workspaceFolder}/node_modules/.bin/jest", - "args": [ - "${fileBasenameNoExtension}", - "--config", - "jest.config.js" - ], - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest", - } + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Jest All", + "program": "${workspaceFolder}/node_modules/.bin/jest", + "args": [ + "--runInBand" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true, + "windows": { + "program": "${workspaceFolder}/node_modules/jest/bin/jest", } - ] - } \ No newline at end of file + }, + { + "type": "node", + "request": "launch", + "name": "Jest Current File", + "program": "${workspaceFolder}/node_modules/.bin/jest", + "args": [ + "${fileBasenameNoExtension}", + "--config", + "jest.config.js" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true, + "windows": { + "program": "${workspaceFolder}/node_modules/jest/bin/jest", + } + } + ] +} \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index 91a2d2c..a93551f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,4 @@ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', -}; \ No newline at end of file + preset: "ts-jest", + testEnvironment: "node", +}; diff --git a/lib/index.ts b/lib/index.ts index a987af6..45f560e 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,2 +1,2 @@ -export * from './visualRegressionTracker' -export * from './types' \ No newline at end of file +export * from "./visualRegressionTracker"; +export * from "./types"; diff --git a/lib/types/index.ts b/lib/types/index.ts index 85db895..023462d 100644 --- a/lib/types/index.ts +++ b/lib/types/index.ts @@ -1,5 +1,5 @@ -export * from './build' -export * from './config' -export * from './testRun' -export * from './testRunResult' -export * from './testRunStatus' \ No newline at end of file +export * from "./build"; +export * from "./config"; +export * from "./testRun"; +export * from "./testRunResult"; +export * from "./testRunStatus"; diff --git a/lib/types/testRunStatus.ts b/lib/types/testRunStatus.ts index b8b7a68..1ff7d81 100644 --- a/lib/types/testRunStatus.ts +++ b/lib/types/testRunStatus.ts @@ -1,5 +1,5 @@ export enum TestRunStatus { - new = 'new', - ok = 'ok', - unresolved = 'unresolved', -} \ No newline at end of file + new = "new", + ok = "ok", + unresolved = "unresolved", +} From e9e6538f7fbfeb943b712e6a357a6f0ef0b75b54 Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Mon, 27 Jul 2020 21:36:12 +0200 Subject: [PATCH 3/3] Update package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 98ab19f..dceb90f 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "types": "dist/index.d.ts", "scripts": { "test": "jest", + "test:cov": "jest --collectCoverage", "build": "./node_modules/.bin/tsc" }, "repository": {