mirror of
https://github.com/cse110-fa22-group29/cse110-fa22-group29.git
synced 2024-11-10 05:34:44 +00:00
Merge pull request #62 from cse110-fa22-group29/e2e-testing
Implement End to End Testing Framework
This commit is contained in:
commit
29b065562e
2
.github/workflows/js-unittest.yml
vendored
2
.github/workflows/js-unittest.yml
vendored
@ -23,5 +23,7 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: sudo npm install
|
run: sudo npm install
|
||||||
|
- name: Start local http server
|
||||||
|
run: sudo npm run http-server
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: sudo npm test
|
run: sudo npm test
|
@ -7,7 +7,8 @@
|
|||||||
"lint": "eslint '**/*.js'",
|
"lint": "eslint '**/*.js'",
|
||||||
"fix-style": "eslint --fix **/*.js",
|
"fix-style": "eslint --fix **/*.js",
|
||||||
"lintHTML": "htmlhint '**/*.html'",
|
"lintHTML": "htmlhint '**/*.html'",
|
||||||
"lintCSS": "stylelint '**/*.css'"
|
"lintCSS": "stylelint '**/*.css'",
|
||||||
|
"http-server": "http-server source"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^8.27.0",
|
"eslint": "^8.27.0",
|
||||||
@ -15,6 +16,8 @@
|
|||||||
"mocha": "10",
|
"mocha": "10",
|
||||||
"mock-local-storage": "^1.1.23",
|
"mock-local-storage": "^1.1.23",
|
||||||
"stylelint": "14.14.1",
|
"stylelint": "14.14.1",
|
||||||
"stylelint-config-standard": "^29.0.0"
|
"stylelint-config-standard": "^29.0.0",
|
||||||
|
"puppeteer": "18",
|
||||||
|
"http-server": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,12 @@ import {strict as assert} from "node:assert";
|
|||||||
import {describe, it, beforeEach} from "mocha";
|
import {describe, it, beforeEach} from "mocha";
|
||||||
import {saveReviewsToStorage, getReviewsFromStorage} from "./localStorage.js";
|
import {saveReviewsToStorage, getReviewsFromStorage} from "./localStorage.js";
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
localStorage.clear();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("test app localStorage interaction", () => {
|
describe("test app localStorage interaction", () => {
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
localStorage.clear();
|
||||||
|
});
|
||||||
|
|
||||||
it("get after init", () => {
|
it("get after init", () => {
|
||||||
assert.deepEqual(getReviewsFromStorage(), []);
|
assert.deepEqual(getReviewsFromStorage(), []);
|
||||||
});
|
});
|
||||||
|
31
source/assets/scripts/main.e2e.test.js
Normal file
31
source/assets/scripts/main.e2e.test.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import {strict as assert} from "node:assert";
|
||||||
|
import {describe, it, beforeEach, afterEach} from "mocha";
|
||||||
|
import puppeteer from "puppeteer-core";
|
||||||
|
import { exit } from "node:process";
|
||||||
|
|
||||||
|
describe("test App end to end", async () => {
|
||||||
|
|
||||||
|
let browser;
|
||||||
|
let page;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
browser = await puppeteer.launch();
|
||||||
|
page = await browser.newPage();
|
||||||
|
try{
|
||||||
|
await page.goto("http://localhost:8080", {timeout: 1000});
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.log("❌ failed to connect to localhost webserver on port 8080");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("page should have correct title", async () => {
|
||||||
|
assert.strictEqual(await page.title(), "Food Journal");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await page.close();
|
||||||
|
await browser.close();
|
||||||
|
});
|
||||||
|
});
|
19
specs/adrs/111622-e2etesting-puppeteer.md
Normal file
19
specs/adrs/111622-e2etesting-puppeteer.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Use puppeteer for JS unit testing framework
|
||||||
|
|
||||||
|
- Status: accept
|
||||||
|
- Deciders: Arthur Lu, Marc Reta
|
||||||
|
- Date: 11 / 16 / 22
|
||||||
|
|
||||||
|
## Decision Drivers
|
||||||
|
|
||||||
|
- Need end to end testing framework which runs headlessly and quickly
|
||||||
|
- Framework should integrate well with Mocha, the existing unit testing framework
|
||||||
|
- Framework should be easy to implement end to end tests with
|
||||||
|
|
||||||
|
## Considered Options
|
||||||
|
- puppeteer
|
||||||
|
- selenium-webdriver
|
||||||
|
|
||||||
|
## Decision Outcome
|
||||||
|
|
||||||
|
Chosen Option: Puppeteer for its ease of use with mocha.
|
Loading…
Reference in New Issue
Block a user