mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +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
+7145
-35
File diff suppressed because it is too large
Load Diff
+14
-1
@@ -9,7 +9,9 @@
|
|||||||
"build": "ng build",
|
"build": "ng build",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e"
|
"e2e": "ng e2e",
|
||||||
|
"nice": "node server.js",
|
||||||
|
"jest": "jest --runInBand"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -52,6 +54,8 @@
|
|||||||
"@logisticinfotech/ionic4-datepicker": "^1.4.4",
|
"@logisticinfotech/ionic4-datepicker": "^1.4.4",
|
||||||
"@ng-bootstrap/ng-bootstrap": "^9.1.2",
|
"@ng-bootstrap/ng-bootstrap": "^9.1.2",
|
||||||
"@ngx-translate/core": "^13.0.0",
|
"@ngx-translate/core": "^13.0.0",
|
||||||
|
"@types/jest-environment-puppeteer": "^4.4.1",
|
||||||
|
"@types/puppeteer": "^5.4.4",
|
||||||
"angular-calendar": "^0.28.22",
|
"angular-calendar": "^0.28.22",
|
||||||
"angular-tag-cloud-module": "^5.2.2",
|
"angular-tag-cloud-module": "^5.2.2",
|
||||||
"bootstrap": "^4.5.0",
|
"bootstrap": "^4.5.0",
|
||||||
@@ -65,19 +69,24 @@
|
|||||||
"crypto-js": "^4.0.0",
|
"crypto-js": "^4.0.0",
|
||||||
"date-fns": "^2.17.0",
|
"date-fns": "^2.17.0",
|
||||||
"depd": "^2.0.0",
|
"depd": "^2.0.0",
|
||||||
|
"global": "^4.4.0",
|
||||||
|
"http-server": "^0.12.3",
|
||||||
"ibm-mfp-web-push": "^8.0.2020052213",
|
"ibm-mfp-web-push": "^8.0.2020052213",
|
||||||
"ibm-mfp-web-sdk": "^8.0.2021021706",
|
"ibm-mfp-web-sdk": "^8.0.2021021706",
|
||||||
"ionic-angular": "^3.9.10",
|
"ionic-angular": "^3.9.10",
|
||||||
"ionic-selectable": "^4.7.1",
|
"ionic-selectable": "^4.7.1",
|
||||||
"ionic2-alpha-scroll": "^2.0.1",
|
"ionic2-alpha-scroll": "^2.0.1",
|
||||||
"ionic2-calendar": "^0.6.6",
|
"ionic2-calendar": "^0.6.6",
|
||||||
|
"jest-puppeteer": "^5.0.4",
|
||||||
"jetifier": "^1.6.6",
|
"jetifier": "^1.6.6",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"ngx-socket-io": "^3.2.0",
|
"ngx-socket-io": "^3.2.0",
|
||||||
|
"puppeteer": "^10.1.0",
|
||||||
"rxjs": "~6.6.3",
|
"rxjs": "~6.6.3",
|
||||||
"rxjs-compat": "^6.6.7",
|
"rxjs-compat": "^6.6.7",
|
||||||
"sharp": "^0.25.4",
|
"sharp": "^0.25.4",
|
||||||
"socket.io-client": "^2.3.0",
|
"socket.io-client": "^2.3.0",
|
||||||
|
"ts-jest": "^27.0.3",
|
||||||
"tslib": "^2.0.0",
|
"tslib": "^2.0.0",
|
||||||
"uuidv4": "^6.2.11",
|
"uuidv4": "^6.2.11",
|
||||||
"wordcloud": "^1.1.2",
|
"wordcloud": "^1.1.2",
|
||||||
@@ -94,6 +103,7 @@
|
|||||||
"@ionic/lab": "3.1.7",
|
"@ionic/lab": "3.1.7",
|
||||||
"@types/jasmine": "~3.6.0",
|
"@types/jasmine": "~3.6.0",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
|
"@types/jest": "^26.0.24",
|
||||||
"@types/node": "^12.11.1",
|
"@types/node": "^12.11.1",
|
||||||
"codelyzer": "^6.0.0",
|
"codelyzer": "^6.0.0",
|
||||||
"cordova-android": "^9.1.0",
|
"cordova-android": "^9.1.0",
|
||||||
@@ -117,12 +127,15 @@
|
|||||||
"cordova-plugin-whitelist": "^1.3.4",
|
"cordova-plugin-whitelist": "^1.3.4",
|
||||||
"jasmine-core": "~3.6.0",
|
"jasmine-core": "~3.6.0",
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
"jasmine-spec-reporter": "~5.0.0",
|
||||||
|
"jest": "^27.0.6",
|
||||||
|
"jest-preset-angular": "^9.0.4",
|
||||||
"karma": "~5.0.0",
|
"karma": "~5.0.0",
|
||||||
"karma-chrome-launcher": "~3.1.0",
|
"karma-chrome-launcher": "~3.1.0",
|
||||||
"karma-coverage-istanbul-reporter": "~3.0.2",
|
"karma-coverage-istanbul-reporter": "~3.0.2",
|
||||||
"karma-jasmine": "~4.0.0",
|
"karma-jasmine": "~4.0.0",
|
||||||
"karma-jasmine-html-reporter": "^1.5.0",
|
"karma-jasmine-html-reporter": "^1.5.0",
|
||||||
"protractor": "~7.0.0",
|
"protractor": "~7.0.0",
|
||||||
|
"ts-jest-puppeteer": "0.0.5",
|
||||||
"ts-node": "~8.3.0",
|
"ts-node": "~8.3.0",
|
||||||
"tslint": "~6.1.0",
|
"tslint": "~6.1.0",
|
||||||
"typescript": "^4.1.5"
|
"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>
|
||||||
|
|
||||||
<div class="aside overflow-y-auto d-flex flex-wrap width-100">
|
<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">
|
<div class="d-flex justify-center">
|
||||||
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
|
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ import { PedidosPage } from './pedidos/pedidos.page';
|
|||||||
/* import { PendentesPage } from './pendentes/pendentes.page'; */
|
/* import { PendentesPage } from './pendentes/pendentes.page'; */
|
||||||
import { AuthService } from 'src/app/services/auth.service';
|
import { AuthService } from 'src/app/services/auth.service';
|
||||||
import { User } from 'src/app/models/user.model';
|
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 { ExpedientsPage } from 'src/app/shared/gabinete-digital/expedients/expedients.page';
|
||||||
import { PendentesPage } from 'src/app/shared/gabinete-digital/pendentes/pendentes.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';
|
import { EventsToApprovePage } from 'src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page';
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
Entrar com senha
|
Entrar com senha
|
||||||
</div>
|
</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
|
Limpar
|
||||||
</div>
|
</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": {
|
"angularCompilerOptions": {
|
||||||
"fullTemplateTypeCheck": true,
|
"fullTemplateTypeCheck": true,
|
||||||
"strictInjectionParameters": true
|
"strictInjectionParameters": true
|
||||||
}
|
},
|
||||||
|
"esModuleInterop": true
|
||||||
}
|
}
|
||||||
+6
-2
@@ -4,7 +4,10 @@
|
|||||||
"outDir": "./out-tsc/spec",
|
"outDir": "./out-tsc/spec",
|
||||||
"types": [
|
"types": [
|
||||||
"jasmine",
|
"jasmine",
|
||||||
"node"
|
"node",
|
||||||
|
"jest",
|
||||||
|
"puppeteer",
|
||||||
|
"jest-environment-puppeteer",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
@@ -14,5 +17,6 @@
|
|||||||
"include": [
|
"include": [
|
||||||
"src/**/*.spec.ts",
|
"src/**/*.spec.ts",
|
||||||
"src/**/*.d.ts"
|
"src/**/*.d.ts"
|
||||||
]
|
],
|
||||||
|
"esModuleInterop": true
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user