mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 12:37:53 +00:00
Add jest and puppeteer for testing
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
@@ -0,0 +1,13 @@
|
||||
// jest-puppeteer.config.js
|
||||
module.exports = {
|
||||
server: {
|
||||
command: 'http-server ./www',
|
||||
port: 8080,
|
||||
launchTimeout: 5000
|
||||
},
|
||||
|
||||
launch: {
|
||||
dumpio: true,
|
||||
headless: false,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
module.exports = {
|
||||
"roots": [
|
||||
"<rootDir>/test"
|
||||
],
|
||||
"testMatch": [
|
||||
"**/__tests__/**/*.+(ts|tsx|js)",
|
||||
"**/?(*.)+(spec|test).+(ts|tsx|js)"
|
||||
],
|
||||
"transform": {
|
||||
"^.+\\.(ts|tsx)$": "ts-jest"
|
||||
},
|
||||
// "globalSetup": "<rootDir>/test/setupJest.ts",
|
||||
preset: 'jest-puppeteer',
|
||||
// setupFilesAfterEnv: "<rootDir>/test/setupJest.ts",
|
||||
}
|
||||
Generated
+7146
-36
File diff suppressed because it is too large
Load Diff
+14
-1
@@ -9,7 +9,9 @@
|
||||
"build": "ng build",
|
||||
"test": "ng test",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e"
|
||||
"e2e": "ng e2e",
|
||||
"nice": "node server.js",
|
||||
"jest": "jest --runInBand"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
@@ -52,6 +54,8 @@
|
||||
"@logisticinfotech/ionic4-datepicker": "^1.4.4",
|
||||
"@ng-bootstrap/ng-bootstrap": "^9.1.2",
|
||||
"@ngx-translate/core": "^13.0.0",
|
||||
"@types/jest-environment-puppeteer": "^4.4.1",
|
||||
"@types/puppeteer": "^5.4.4",
|
||||
"angular-calendar": "^0.28.22",
|
||||
"angular-tag-cloud-module": "^5.2.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
@@ -65,19 +69,24 @@
|
||||
"crypto-js": "^4.0.0",
|
||||
"date-fns": "^2.17.0",
|
||||
"depd": "^2.0.0",
|
||||
"global": "^4.4.0",
|
||||
"http-server": "^0.12.3",
|
||||
"ibm-mfp-web-push": "^8.0.2020052213",
|
||||
"ibm-mfp-web-sdk": "^8.0.2021021706",
|
||||
"ionic-angular": "^3.9.10",
|
||||
"ionic-selectable": "^4.7.1",
|
||||
"ionic2-alpha-scroll": "^2.0.1",
|
||||
"ionic2-calendar": "^0.6.6",
|
||||
"jest-puppeteer": "^5.0.4",
|
||||
"jetifier": "^1.6.6",
|
||||
"moment": "^2.29.1",
|
||||
"ngx-socket-io": "^3.2.0",
|
||||
"puppeteer": "^10.1.0",
|
||||
"rxjs": "~6.6.3",
|
||||
"rxjs-compat": "^6.6.7",
|
||||
"sharp": "^0.25.4",
|
||||
"socket.io-client": "^2.3.0",
|
||||
"ts-jest": "^27.0.3",
|
||||
"tslib": "^2.0.0",
|
||||
"uuidv4": "^6.2.11",
|
||||
"wordcloud": "^1.1.2",
|
||||
@@ -94,6 +103,7 @@
|
||||
"@ionic/lab": "3.1.7",
|
||||
"@types/jasmine": "~3.6.0",
|
||||
"@types/jasminewd2": "~2.0.3",
|
||||
"@types/jest": "^26.0.24",
|
||||
"@types/node": "^12.11.1",
|
||||
"codelyzer": "^6.0.0",
|
||||
"cordova-android": "^9.1.0",
|
||||
@@ -117,12 +127,15 @@
|
||||
"cordova-plugin-whitelist": "^1.3.4",
|
||||
"jasmine-core": "~3.6.0",
|
||||
"jasmine-spec-reporter": "~5.0.0",
|
||||
"jest": "^27.0.6",
|
||||
"jest-preset-angular": "^9.0.4",
|
||||
"karma": "~5.0.0",
|
||||
"karma-chrome-launcher": "~3.1.0",
|
||||
"karma-coverage-istanbul-reporter": "~3.0.2",
|
||||
"karma-jasmine": "~4.0.0",
|
||||
"karma-jasmine-html-reporter": "^1.5.0",
|
||||
"protractor": "~7.0.0",
|
||||
"ts-jest-puppeteer": "0.0.5",
|
||||
"ts-node": "~8.3.0",
|
||||
"tslint": "~6.1.0",
|
||||
"typescript": "^4.1.5"
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
# Gabinete Digital
|
||||
|
||||
## Requirements
|
||||
|
||||
[node >= 14](https://nodejs.org/dist/v14.17.3/node-v14.17.3-x64.msi)
|
||||
|
||||
## Installation
|
||||
|
||||
Use the package manager npm to install dependencies.
|
||||
|
||||
```bash
|
||||
npm ci
|
||||
npm install
|
||||
npm install -g @ionic/cli
|
||||
npm install -g http-server
|
||||
```
|
||||
|
||||
## Start the development server
|
||||
|
||||
```bash
|
||||
ionic serve
|
||||
```
|
||||
|
||||
|
||||
## build for production and launch server
|
||||
|
||||
```bash
|
||||
ionic serve build --prod
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Run test
|
||||
|
||||
```bash
|
||||
npm run jest
|
||||
```
|
||||
|
||||
|
||||
## Contributing
|
||||
For major changes, please open an issue first to discuss what you would like to change.
|
||||
|
||||
Please make sure to update tests as appropriate.
|
||||
@@ -21,7 +21,7 @@
|
||||
</div>
|
||||
|
||||
<div class="aside overflow-y-auto d-flex flex-wrap width-100">
|
||||
<div (click)="openEventsToApprovePage('MDGPR');selectedElement='approval'" [class.active]="selectedElement == 'approval'" class="exp-card d-flex flex-column" *ngIf="loggeduser.Profile == 'MDGPR'" >
|
||||
<div (click)="openEventsToApprovePage();selectedElement='approval'" [class.active]="selectedElement == 'approval'" class="exp-card d-flex flex-column" *ngIf="loggeduser.Profile == 'MDGPR'" >
|
||||
<div class="d-flex justify-center">
|
||||
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
|
||||
</div>
|
||||
|
||||
@@ -10,8 +10,6 @@ import { PedidosPage } from './pedidos/pedidos.page';
|
||||
/* import { PendentesPage } from './pendentes/pendentes.page'; */
|
||||
import { AuthService } from 'src/app/services/auth.service';
|
||||
import { User } from 'src/app/models/user.model';
|
||||
import { DespachosPrPage } from 'src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page'
|
||||
import { DiplomasPage } from 'src/app/shared/gabinete-digital/diplomas/diplomas.page';
|
||||
import { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page';
|
||||
import { PendentesPage } from 'src/app/shared/gabinete-digital/pendentes/pendentes.page';
|
||||
import { EventsToApprovePage } from 'src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page';
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
Entrar com senha
|
||||
</div>
|
||||
|
||||
<div class="voltar d-flex align-center justify-center pt-25 clear" (click)="clearCode()">
|
||||
<div id="clear" class="cy-clear voltar d-flex align-center justify-center pt-25 clear" (click)="clearCode()">
|
||||
Limpar
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
import { promise } from 'protractor';
|
||||
import { environment } from './../src/environments/environment'
|
||||
|
||||
function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
describe('Puppeteer tests', () => {
|
||||
|
||||
beforeAll(async () => {
|
||||
// await page.goto('http://127.0.0.1:8080')
|
||||
})
|
||||
|
||||
test('[table] login', async () => {
|
||||
|
||||
// const browser = await puppeteer.launch({headless: false});
|
||||
await page.setViewport({width: 1200, height: 720});
|
||||
await page.goto('http://127.0.0.1:8080'); // wait until page load
|
||||
await page.waitForSelector('.btn-ok')
|
||||
|
||||
|
||||
await page.evaluate( () => {
|
||||
let a: HTMLInputElement = document.querySelector('input[type="text"]')
|
||||
a.value = ''
|
||||
|
||||
let b: HTMLInputElement = document.querySelector('input[type="password"')
|
||||
b.value = ''
|
||||
})
|
||||
|
||||
await page.type('input[type="text"]', environment.defaultuser);
|
||||
await page.type('input[type="password"]', environment.defaultuserpwd);
|
||||
// click and wait for navigation
|
||||
await Promise.all([
|
||||
page.click('.btn-ok'),
|
||||
// page.waitForNavigation({ waitUntil: 'networkidle0' }),
|
||||
]);
|
||||
|
||||
await page.waitForSelector('.circle')
|
||||
|
||||
expect(3 + 2).toBe(5);
|
||||
},30000);
|
||||
|
||||
test('[table] Clear Code button and set pin', async () => {
|
||||
|
||||
// const browser = await puppeteer.launch({headless: false});
|
||||
await page.setViewport({width: 1200, height: 720});
|
||||
await page.goto('http://127.0.0.1:8080'); // wait until page load
|
||||
await page.waitForSelector('.btn-ok')
|
||||
|
||||
|
||||
await page.evaluate( () => {
|
||||
let a: HTMLInputElement = document.querySelector('input[type="text"]')
|
||||
a.value = ''
|
||||
|
||||
let b: HTMLInputElement = document.querySelector('input[type="password"')
|
||||
b.value = ''
|
||||
})
|
||||
|
||||
await page.type('input[type="text"]', environment.defaultuser);
|
||||
await page.type('input[type="password"]', environment.defaultuserpwd);
|
||||
// click and wait for navigation
|
||||
await Promise.all([
|
||||
page.click('.btn-ok'),
|
||||
// page.waitForNavigation({ waitUntil: 'networkidle0' }),
|
||||
]);
|
||||
|
||||
await page.waitForSelector('.circle')
|
||||
// define code
|
||||
await page.click('.circle')
|
||||
await page.click('.circle')
|
||||
await page.click('.circle')
|
||||
|
||||
// clear code
|
||||
await page.click('.cy-clear')
|
||||
|
||||
// define code
|
||||
await page.click('.circle')
|
||||
await page.click('.circle')
|
||||
await page.click('.circle')
|
||||
await page.click('.circle')
|
||||
|
||||
|
||||
await page.click('.div-profile')
|
||||
|
||||
expect(3 + 2).toBe(5);
|
||||
},30000);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
import { element } from 'protractor';
|
||||
import { environment } from './../src/environments/environment'
|
||||
|
||||
describe('Puppeteer tests', () => {
|
||||
|
||||
beforeAll(async () => {
|
||||
// await page.goto('http://127.0.0.1:8080')
|
||||
})
|
||||
|
||||
test('login', async () => {
|
||||
|
||||
|
||||
expect(3 + 2).toBe(5);
|
||||
}, 30000);
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
const ts_preset = require('ts-jest/presets/js-with-babel/jest-preset')
|
||||
const puppeteer_preset = require('jest-puppeteer/jest-preset')
|
||||
require('expect-puppeteer')
|
||||
|
||||
module.exports = async () => {
|
||||
|
||||
};
|
||||
+2
-1
@@ -19,5 +19,6 @@
|
||||
"angularCompilerOptions": {
|
||||
"fullTemplateTypeCheck": true,
|
||||
"strictInjectionParameters": true
|
||||
}
|
||||
},
|
||||
"esModuleInterop": true
|
||||
}
|
||||
+6
-2
@@ -4,7 +4,10 @@
|
||||
"outDir": "./out-tsc/spec",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
"node",
|
||||
"jest",
|
||||
"puppeteer",
|
||||
"jest-environment-puppeteer",
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
@@ -14,5 +17,6 @@
|
||||
"include": [
|
||||
"src/**/*.spec.ts",
|
||||
"src/**/*.d.ts"
|
||||
]
|
||||
],
|
||||
"esModuleInterop": true
|
||||
}
|
||||
Reference in New Issue
Block a user