Compare commits

..

1 Commits

Author SHA1 Message Date
pedro 0a12f73668 some tests tend to fail
these are all, that are sensible on running several time in the same
instance (without resetting the DB)
2024-04-02 18:14:54 +02:00
7 changed files with 10 additions and 252 deletions

View File

@ -18,9 +18,7 @@ export default defineConfig({
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
// TODO fix more than 1 worker/concurrency situation
//workers: process.env.CI ? 1 : undefined,
workers: 1,
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */

View File

@ -116,7 +116,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
* - Check that the fields displayed in "View" Credential are the expected ones
*/
test('USER -> My Credentials -> View FVC enabled Credential for user1', async ({ page }) => {
test.fixme('USER -> My Credentials -> View FVC enabled Credential for user1', async ({ page }) => {
let schemaType = SCHEMA_TYPE_FVC;
let user = USER1_EMAIL;
@ -126,7 +126,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
});
test('USER -> My Credentials -> View FVC enabled Credential for user2', async ({ page }) => {
test.fixme('USER -> My Credentials -> View FVC enabled Credential for user2', async ({ page }) => {
let schemaType = SCHEMA_TYPE_FVC;
let user = USER2_EMAIL;

View File

@ -101,7 +101,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
*/
test('USER -> My Credentials -> View MC enabled Credential for user1', async ({ page }) => {
test.fixme('USER -> My Credentials -> View MC enabled Credential for user1', async ({ page }) => {
let schemaType = SCHEMA_TYPE_MC;
let user = USER1_EMAIL;
@ -111,7 +111,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
});
test('USER -> My Credentials -> View MC enabled Credential for user3', async ({ page }) => {
test.fixme('USER -> My Credentials -> View MC enabled Credential for user3', async ({ page }) => {
let schemaType = SCHEMA_TYPE_MC;
let user = USER3_EMAIL;

View File

@ -102,7 +102,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
* - Check that the fields displayed in "View" Credential are the expected ones
*/
test('USER -> My Credentials -> View NGO_FM enabled Credential for user1', async ({ page }) => {
test.fixme('USER -> My Credentials -> View NGO_FM enabled Credential for user1', async ({ page }) => {
let schemaType = SCHEMA_TYPE_NGO_FM;
let user = USER1_EMAIL;
@ -111,7 +111,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
});
test('USER -> My Credentials -> View NGO_FM enabled Credential for user2', async ({ page }) => {
test.fixme('USER -> My Credentials -> View NGO_FM enabled Credential for user2', async ({ page }) => {
let schemaType = SCHEMA_TYPE_NGO_FM;
let user = USER2_EMAIL;

View File

@ -102,7 +102,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
* - Check that the fields displayed in "View" Credential are the expected ones
*/
test('USER -> My Credentials -> View CC enabled Credential for user1', async ({ page }) => {
test.fixme('USER -> My Credentials -> View CC enabled Credential for user1', async ({ page }) => {
let schemaType = SCHEMA_TYPE_CC;
let user = USER1_EMAIL;
@ -111,7 +111,7 @@ test.describe('USER -> My Credentials - enable and issue credentials', () => {
});
test('USER -> My Credentials -> View CC enabled Credential for user2', async ({ page }) => {
test.fixme('USER -> My Credentials -> View CC enabled Credential for user2', async ({ page }) => {
let schemaType = SCHEMA_TYPE_CC;
let user = USER2_EMAIL;

View File

@ -66,7 +66,7 @@ test.describe('ADMIN-> DATA -> Import EOP excel files', () => {
});
test.fixme('ADMIN-> DATA -> Import EOC excel file - Sad path (bad formatted file, with alien columns)', async ({ page }) => {
test('ADMIN-> DATA -> Import EOC excel file - Sad path (bad formatted file, with alien columns)', async ({ page }) => {
const fileToImport = FILE_TO_IMPORT_EOC_WITH_ALIEN_COLUMNS;
const jsonSchema = JSON_SCHEMA_EOC;

View File

@ -1,240 +0,0 @@
import { IDHUB_WALLET, IDHUB_VERIFIER } from '../src/constants/env_constants';
import { test, expect } from '@playwright/test';
// TODO import domain WALLET y VERIFIER
// TODO env var
// optional page (decrypt)
// src https://playwright.dev/docs/locators#matching-one-of-the-two-alternative-locators
async function accept_data_protection(page) {
// TODO cannot be, because of this inconsistency: Data Protection (user) vs Data protection (admin)
//const data_protection = await page.getByRole('heading', { name: 'Data protection', exact: true })
const data_protection = await page.getByRole('heading', { name: 'Data protection' })
if (await data_protection.isVisible()) {
await page.locator('#id_accept_privacy').check();
await page.locator('#id_accept_legal').check();
await page.locator('#id_accept_cookies').check();
await page.getByRole('link', { name: 'Confirm' }).click();
}
}
async function login(page) {
await page.goto(IDHUB_WALLET + '/login/');
await page.getByPlaceholder('Email address').click();
await page.getByPlaceholder('Email address').fill('idhub_admin@pangea.org');
await page.getByPlaceholder('Password').fill('1234');
await page.getByRole('button', { name: 'Log in' }).click();
}
// optional flow (only first time per idhub service start)
async function set_org_key(page) {
//const encryption_key_page = page.getByText('Encryption Key')
const encryption_key_page_admin = await page.getByRole('heading', { name: 'Encryption Key', exact: true })
if (await encryption_key_page_admin.isVisible()) {
await page.getByPlaceholder('Key for encrypt the secrets').click();
await page.getByPlaceholder('Key for encrypt the secrets').fill('1234');
await page.getByRole('button', { name: 'Save' }).click();
}
}
// useful for DEBUG
// await page.pause();
async function oidc_flow(page) {
await login(page);
const url = page.url();
const hostname = new URL(url).hostname;
let vcred_schema;
let vcred_file;
// TODO vcred_file path is hardcoded:
// 1. make it relative
// 2. add file in e2e test directory (maybe already exists)
// see ./vc_excel/financial-vulnerability.xlsx (visto, no es el mismo)
// TODO change hardcoded paths
if (/setem/.test(hostname)) {
vcred_schema='Membership Card'
vcred_file='/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/membership-card.xlsx'
} else if (/xo9b/.test(hostname)) {
vcred_schema='Financial Vulnerability Credential'
vcred_file='/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/financial-vulnerability.xlsx'
} else if (/ereuse/.test(hostname)) {
vcred_schema='Product and waste electronics operator claim'
vcred_file='/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/e-operator-claim.xlsx'
} else {
test.skip();
}
await set_org_key(page);
await accept_data_protection(page);
await page.getByRole('link', { name: ' Data' }).click();
await page.getByRole('link', { name: 'Import data ' }).click();
// src https://playwright.dev/docs/input#select-options
await page.getByLabel('Schema').selectOption(vcred_schema);
// src https://playwright.dev/docs/input#upload-files
// TODO hardcoded URL
await page.getByLabel('File to import').setInputFiles(vcred_file);
//await page.setInputFiles('input[type="file"]', '/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/financial-vulnerability.xlsx');
await page.getByRole('button', { name: 'Save' }).click();
await page.getByRole('link', { name: '', exact: true }).click();
await page.getByPlaceholder('Email address').click();
await page.getByPlaceholder('Email address').fill('user1@example.org');
await page.getByPlaceholder('Password').click();
await page.getByPlaceholder('Password').fill('1234');
await page.getByRole('button', { name: 'Log in' }).click();
await accept_data_protection(page);
await page.getByRole('link', { name: 'Identities (DIDs)' }).click();
await page.getByRole('link', { name: 'Add Identity ' }).click();
await page.getByPlaceholder('Label').click();
await page.getByPlaceholder('Label').fill('default');
// TODO where?
// TODO report bug, if selected the wrong credential here, se queda colgado
await page.getByLabel('Type').selectOption('1');
await page.getByRole('button', { name: 'Save' }).click();
await page.getByRole('link', { name: 'Request a credential' }).click();
await page.getByRole('button', { name: 'Request' }).click();
if (/xo9b/.test(hostname)) {
await page.goto(IDHUB_VERIFIER + '/promotion/');
await page.getByRole('link', { name: 'Contractar amb credencial' }).click();
await page.getByRole('button', { name: 'Go' }).click();
await page.getByRole('radio').first().check();
await page.getByRole('checkbox').check();
await page.getByRole('button', { name: 'Present' }).click();
}
// TODO averiguar si devuelve código es final 1 (OIDC_REDIRECT=false)
// TODO averiguar si hace redirección a 2 es final 2 (OIDC_REDIRECT=true)
}
// TODO test que hace la presentación de la credencial al revés
// TODO test que hace la presentación de la credencial al revés
test.describe.skip('test-pilots', () => {
test('sign_pdf', async ({ page }) => {
await login(page);
await set_org_key(page);
await accept_data_protection(page);
await page.getByRole('link', { name: ' Credentials' }).click();
await page.getByRole('link', { name: 'Organization\'s wallet' }).click();
await page.getByRole('link', { name: 'Configure credential issuance' }).click();
await page.getByPlaceholder('Label').click();
await page.getByPlaceholder('Label').fill('dni');
await page.getByPlaceholder('Label').press('Tab');
await page.getByPlaceholder('Password of certificate').fill('123456');
//await page.getByLabel('File import').click();
await page.getByLabel('File import').setInputFiles('/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/signerDNIe004.pfx');
await page.getByRole('button', { name: 'Upload' }).click();
await page.getByRole('link', { name: ' Data' }).click();
await page.getByRole('link', { name: 'Import data ' }).click();
await page.getByLabel('Signature with Eidas1').selectOption('signerDNIe004.pfx');
await page.getByLabel('Schema').selectOption('1');
await page.getByText('ID HUB PANGEA idhub_admin@pangea.org Dashboard Users View users Add user Roles').click();
//await page.getByLabel('File to import').click();
await page.getByLabel('File to import').setInputFiles('/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/course-credential.xlsx');
await page.getByRole('button', { name: 'Save' }).click();
// await page.getByRole('link', { name: ' Data' }).click();
// await page.getByRole('link', { name: 'Import data ' }).click();
// // src https://playwright.dev/docs/input#select-options
// await page.getByLabel('Schema').selectOption('Financial Vulnerability Credential');
// // src https://playwright.dev/docs/input#upload-files
// // TODO hardcoded URL
// await page.getByLabel('File to import').setInputFiles('/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/financial-vulnerability.xlsx');
// //await page.setInputFiles('input[type="file"]', '/home/music/trustchain-oc1-orchestral-docker/IdHub/examples/excel_examples/financial-vulnerability.xlsx');
// await page.getByRole('button', { name: 'Save' }).click();
await page.getByRole('link', { name: '', exact: true }).click();
await page.getByPlaceholder('Email address').click();
await page.getByPlaceholder('Email address').fill('user1@example.org');
await page.getByPlaceholder('Password').click();
await page.getByPlaceholder('Password').fill('1234');
await page.getByRole('button', { name: 'Log in' }).click();
await accept_data_protection(page);
await page.getByRole('link', { name: 'Identities (DIDs)' }).click();
await page.getByRole('link', { name: 'Add Identity ' }).click();
await page.getByPlaceholder('Label').click();
await page.getByPlaceholder('Label').fill('default');
await page.getByLabel('Type').selectOption('1');
await page.getByRole('button', { name: 'Save' }).click();
await page.getByRole('link', { name: 'Request a credential' }).click();
await page.getByRole('button', { name: 'Request' }).click();
// TODO take last (because is the latest!!)
// src https://www.programsbuzz.com/article/playwright-select-first-or-last-element
// not tested
await page.getByRole('link', { name: '' }).last().click();
const downloadPromise = page.waitForEvent('download');
await page.getByRole('link', { name: 'Download as PDF (Catalan)' }).click();
const download = await downloadPromise;
const download1Promise = page.waitForEvent('download');
await page.getByRole('link', { name: 'Download as JSON' }).click();
const download1 = await download1Promise;
const download2Promise = page.waitForEvent('download');
await page.getByRole('link', { name: 'Download as PDF (Spanish)' }).click();
const download2 = await download2Promise;
await page.pause();
});
test('oidc_flow', async ({ page }) => {
await oidc_flow(page);
await page.pause();
});
test('login', async ({ page }) => {
await login(page);
await page.pause();
});
test('ereuse_pilot', async ({ page }) => {
// TEMP reenable
await oidc_flow(page);
// TODO hardcoded domain
await page.goto('https://devicehub.demo.pangea.org/');
await page.getByPlaceholder('Email').fill('manufacturer@hp.es');
await page.getByPlaceholder('Email').press('Tab');
await page.getByPlaceholder('Password').fill('1234');
await page.getByPlaceholder('Password').press('Enter');
await page.getByRole('button', { name: ' Snapshots' }).click();
await page.getByRole('link', { name: ' Upload files' }).click();
// TODO hardcoded URL
// TODO this was the first we tried and work
//const snapshot_file='/home/music/org-extra/projects-2024/2024_17_tchain/2024-04-02__piloto-ereuse/snapshot-2022-6-9-10-21_usody@pangea.org_7928afeb-e6a4-464a-a842-0c3de0d01677.json'
// TODO this comes from here: https://gitea.pangea.org/trustchain-oc1-orchestral/devicehub-teal/src/branch/idhub/examples/snapshots/snapshot01.json
//const snapshot_file='/home/music/trustchain-oc1-orchestral-docker/devicehub-teal/examples/snapshots/snapshot01.json'
await page.locator('#snapshot').setInputFiles(snapshot_file);
await page.getByRole('button', { name: 'Send' }).click();
await page.getByRole('link', { name: ' Unassigned devices' }).click();
await page.getByRole('link', { name: ' Laptop hewlett-packard hp' }).click();
await page.getByRole('button', { name: 'Digital Passports' }).click();
const page1Promise = page.waitForEvent('popup');
await page.getByRole('link', { name: '169f2c6c0b60a529fce65ba619b2fa5ddc02207e0cbe8b7d64afe39bb247e02f:' }).click();
const page1 = await page1Promise;
await page1.getByRole('link', { name: 'Logout' }).click();
await page1.getByRole('button', { name: 'Validate' }).click();
await page1.getByRole('link', { name: 'Use a wallet' }).click();
await page1.getByRole('button', { name: 'Go' }).click();
await page1.getByRole('radio').check();
await page1.getByRole('checkbox').check();
await page1.getByRole('button', { name: 'Present' }).click();
await page.pause();
});
});