From 4521544c809749099a6474d5a57f0612d011738d Mon Sep 17 00:00:00 2001 From: oussi Date: Mon, 27 Apr 2026 14:40:09 +0200 Subject: [PATCH] premier push --- package-lock.json | 232 +++++ package.json | 15 + playwright.config.ts | 41 + tests/t2a.spec.ts | 2330 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2618 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 tests/t2a.spec.ts diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8e38b6c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,232 @@ +{ + "name": "playwright-aiva", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "playwright-aiva", + "version": "1.0.0", + "dependencies": { + "otplib": "^12.0.1" + }, + "devDependencies": { + "@playwright/test": "^1.55.1", + "allure-playwright": "^3.4.1", + "dotenv": "^16.3.1" + } + }, + "node_modules/@otplib/core": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@otplib/core/-/core-12.0.1.tgz", + "integrity": "sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==", + "license": "MIT" + }, + "node_modules/@otplib/plugin-crypto": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz", + "integrity": "sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==", + "license": "MIT", + "dependencies": { + "@otplib/core": "^12.0.1" + } + }, + "node_modules/@otplib/plugin-thirty-two": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz", + "integrity": "sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==", + "license": "MIT", + "dependencies": { + "@otplib/core": "^12.0.1", + "thirty-two": "^1.0.2" + } + }, + "node_modules/@otplib/preset-default": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@otplib/preset-default/-/preset-default-12.0.1.tgz", + "integrity": "sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==", + "license": "MIT", + "dependencies": { + "@otplib/core": "^12.0.1", + "@otplib/plugin-crypto": "^12.0.1", + "@otplib/plugin-thirty-two": "^12.0.1" + } + }, + "node_modules/@otplib/preset-v11": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@otplib/preset-v11/-/preset-v11-12.0.1.tgz", + "integrity": "sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==", + "license": "MIT", + "dependencies": { + "@otplib/core": "^12.0.1", + "@otplib/plugin-crypto": "^12.0.1", + "@otplib/plugin-thirty-two": "^12.0.1" + } + }, + "node_modules/@playwright/test": { + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", + "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.55.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/allure-js-commons": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/allure-js-commons/-/allure-js-commons-3.4.1.tgz", + "integrity": "sha512-Lzs91+8fTPUucnLwQULuuLyEJWQCBCxsZl5tX6lMPFZcAVXgwu/Dti0XfzhH9R1Hw8e43k20XAlmyh/ZDqqpYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "md5": "^2.3.0" + }, + "peerDependencies": { + "allure-playwright": "3.4.1" + }, + "peerDependenciesMeta": { + "allure-playwright": { + "optional": true + } + } + }, + "node_modules/allure-playwright": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/allure-playwright/-/allure-playwright-3.4.1.tgz", + "integrity": "sha512-vSc+7iBmilejRbSiv0dakl+/EONHFUs3yDmEOydKmF0+aOMczRyMYOBvU42Ob51PrZozi11ExiQj9SCMH0c4bQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "allure-js-commons": "3.4.1" + }, + "peerDependencies": { + "@playwright/test": ">=1.53.0" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/otplib": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/otplib/-/otplib-12.0.1.tgz", + "integrity": "sha512-xDGvUOQjop7RDgxTQ+o4pOol0/3xSZzawTiPKRrHnQWAy0WjhNs/5HdIDJCrqC4MBynmjXgULc6YfioaxZeFgg==", + "license": "MIT", + "dependencies": { + "@otplib/core": "^12.0.1", + "@otplib/preset-default": "^12.0.1", + "@otplib/preset-v11": "^12.0.1" + } + }, + "node_modules/playwright": { + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", + "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.55.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", + "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/thirty-two": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", + "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==", + "engines": { + "node": ">=0.2.6" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..03a6b57 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "playwright-aiva", + "version": "1.0.0", + "scripts": { + "test": "npx playwright test" + }, + "devDependencies": { + "@playwright/test": "^1.55.1", + "allure-playwright": "^3.4.1", + "dotenv": "^16.3.1" + }, + "dependencies": { + "otplib": "^12.0.1" + } +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..020f198 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,41 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + + testDir: './tests', + timeout: 120000, // 120s par test + expect: { timeout: 10000 }, + workers: process.env.CI? 1: undefined, + retries: process.env.CI? 2: 0, + + use: { + screenshot : 'only-on-failure', + trace: 'on-first-retry', + video: 'retain-on-failure', + baseURL: 'https://127.0.0.1:8090/localweb/ASPlateforme', + headless: false, + viewport: { width: 1280, height: 720 }, + ignoreHTTPSErrors: true, + actionTimeout: 30000, + navigationTimeout: 60000, + lanchOptions: { + args: [ + '--disable-gpu', + '--disable-dey-shm-usage', + '--no-sandbox', + '--disable-extensions', + '--disable-background-networking', + ] + } + }, + + reporter: [ + ['list'], + ['junit', { outputFile: 'junit/results.xml' }], + ['html', { open: 'never', outputFolder: 'playwright-report' }], + ['allure-playwright'] + ], + + outputDir: 'reports/artifacts', + +}); diff --git a/tests/t2a.spec.ts b/tests/t2a.spec.ts new file mode 100644 index 0000000..8e442cb --- /dev/null +++ b/tests/t2a.spec.ts @@ -0,0 +1,2330 @@ +//npx playwright test tests/opt.spec.ts +//npx playwright test tests/opt.spec.ts --headed +//npx playwright test tests/opt.spec.ts --debug +//allure serve allure-results + +import { Page, test, expect } from '@playwright/test'; + +// Réutilisation de la session + +let finess = '640780417'; + +test.describe('Module T2A', () => { + + test.beforeEach(async ({ page }) => { + await page.goto('http://localhost:8090/amadeaweb/AIVA_T2A_PREPROD'); + await page.locator('input[class="ISTxtFld IS_LoginInput"]').fill('JENKINS'); + await page.locator('input[class="ISPwdFld IS_PasswordInput"]').fill('JENKINSES'); + await page.locator('a[class="IS_button IS_SubmitButton"]').click(); + await page.getByText('Vos contrôles').waitFor({ state: 'visible', timeout: 20000 }); + }); + + test.describe('I) Initialisation', () => { + test.describe('1- Vos contrôles', () => { + test('a) Nouveau contrôle', async ({ page }) => { + await page.getByTitle('Nouveau contrôle').nth(1).click(); + await expect.soft(page.getByText('Nouveau Contrôle', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Vous pouvez initier un nouveau contrôle dès la réception du premier courrier d’information. Pour cela, vous aurez besoin des fichiers PMSI')).toBeVisible(); + await page.getByText('Démarrer').click(); + // Etape 1 + await expect(page.getByText('Etape 1 - Documenter le contrôle')).toBeVisible(); + await expect.soft(page.getByRole('combobox', { name: 'Saisir un finess ou un nom d' })).toBeVisible(); + await page.getByRole('combobox', { name: 'Saisir un finess ou un nom d' }).fill("0"); + await expect.soft(page.getByRole('option', { name: '640780417 - CENTRE' })).toBeVisible(); + await page.getByRole('option', { name: '640780417 - CENTRE' }).click(); + await page.getByRole('row', { name: '*Année des dossiers contrôlés', exact: true }).getByRole('spinbutton').fill('2024'); + await page.waitForTimeout(1000); + await page.getByRole('row', { name: '*Nom du Médecin Dim', exact: true }).getByRole('textbox').fill('JENKINS'); + await page.getByRole('row', { name: '*Nom du Médecin Dim', exact: true }).getByRole('textbox').fill('JENKINS'); + await page.waitForTimeout(1000); + await page.getByRole('row', { name: '*Nombre de champs contrôlés', exact: true }).getByRole('spinbutton').fill('3'); + await page.waitForTimeout(1000); + await page.getByRole('row', { name: '*Nombre de champs contrôlés', exact: true }).getByRole('spinbutton').fill('3'); + + await page.getByText('ETAPE SUIVANTE').click(); + await expect.soft(page.getByText('Les informations préfixées d\'')).toBeVisible(); + await page.locator('label[is_id="0/sanctionable"] input').click(); + await expect.soft(page.locator('label[is_id="0/sanctionable"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/CMA"] input').click(); + await expect.soft(page.locator('label[is_id="0/CMA"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/P_HDJ"] input').click(); + await expect.soft(page.locator('label[is_id="0/P_HDJ"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/P_UHCD"] input').click(); + await expect.soft(page.locator('label[is_id="0/P_UHCD"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/AUTRE"] input').click(); + await expect.soft(page.locator('label[is_id="0/AUTRE"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/S_CONTIGUS"] input').click(); + await expect.soft(page.locator('label[is_id="0/S_CONTIGUS"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/R_GHM"] input').click(); + await expect.soft(page.locator('label[is_id="0/R_GHM"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/S_NONFACT_AM"] input').click(); + await expect.soft(page.locator('label[is_id="0/S_NONFACT_AM"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/DP_CCAM"] input').click(); + await expect.soft(page.locator('label[is_id="0/DP_CCAM"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="0/PIE"] input').click(); + await expect.soft(page.locator('label[is_id="0/PIE"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="1/sanctionable"] input').click(); + await expect.soft(page.locator('label[is_id="1/sanctionable"] input')).toBeChecked(); + await page.waitForTimeout(500); + await page.locator('label[is_id="2/sanctionable"] input').click(); + await expect.soft(page.locator('label[is_id="2/sanctionable"] input')).toBeChecked(); + + await page.getByText('ETAPE SUIVANTE').click(); + + await expect(page.getByText('Etape 2 - Centraliser les')).toBeVisible(); + await expect.soft(page.getByText('Télécharger des documents PDF')).toBeVisible(); + await expect.soft(page.getByRole('textbox', { name: 'Document à télécharger' })).toBeVisible(); + await page.getByRole('textbox', { name: 'Document à télécharger' }).click(); + await expect.soft(page.getByRole('cell', { name: 'AVANT-Courrier Annonce du' })).toBeVisible(); + await page.getByRole('cell', { name: 'AVANT-Courrier Annonce du' }).click(); + await expect.soft(page.getByRole('button', { name: 'Choose File' })).toBeVisible(); + const [fileChooser] = await Promise.all([ + page.waitForEvent('filechooser'), + page.getByRole('button', { name: 'Choose File' }).click() + ]); + //await fileChooser.setFiles('tests/testfiles/sample.pdf'); // A compléter + + await page.getByText('ETAPE SUIVANTE').click(); + + await expect(page.getByText('Etape 3- Importer les')).toBeVisible(); + await expect.soft(page.getByText('Télécharger les fichiers à traiter')).toBeVisible(); + await expect(page.getByRole('textbox', { name: 'Type de fichier à télécharger' })).toBeVisible(); + await page.getByRole('textbox', { name: 'Type de fichier à télécharger' }).click(); + await expect.soft(page.getByRole('cell', { name: 'Fichier DRUIDES' })).toBeVisible(); + await page.getByRole('cell', { name: 'Fichier DRUIDES' }).click(); + await expect.soft(page.getByRole('button', { name: 'Choose File' })).toBeVisible(); + const [fileChooser3] = await Promise.all([ + page.waitForEvent('filechooser'), + page.getByRole('button', { name: 'Choose File' }).click() + ]); + //await fileChooser3.setFiles('tests/testfiles/sample.pdf'); // A compléter + + await page.getByText('ETAPE SUIVANTE').click(); + + await expect.soft(page.getByRole('cell', { name: 'Il n\'y a aucun fichier à' })).toBeVisible(); + await page.getByText('OK').click(); + + await page.locator('i.fa.fa-close').click(); + + await page.getByTitle('Ouvrir un contrôle').click(); + //await page.getByRole('row', { name: '  330000662 - INSTITUT' }).locator('a').nth(2).click(); + await page.locator('i.fa.fa-trash').first().click(); + await expect.soft(page.getByRole('heading', { name: 'SUPPRESSION' })).toBeVisible(); + await page.getByText('OK').click(); + //await expect.soft(page.getByRole('heading', { name: 'CONFIRMER' })).toBeVisible(); + //await page.getByText('Oui').click(); + //await page.getByRole('option', { name: '640780417 - CENTRE' }).waitFor({ state: 'hidden' }); + }); + + test('b) Modifier les informations du contrôle', async ({ page }) => { + await page.getByTitle('Modifier des informations sur le contrôle').last().click(); + await expect(page.getByText(`Editer Contrôle 1 - ${finess} - CENTRE MEDICO-PSYCHOLOGIQUE 2023`)).toBeVisible(); + // Etape 1 + await expect(page.getByText(`Etape 1 - Documenter le contrôle N° 1 - ${finess}`)).toBeVisible(); + + await expect.soft(page.getByText('*Finess')).toBeVisible(); + await expect.soft(page.getByPlaceholder('Saisir un finess ou un nom d\'établissement e')).toHaveValue(`${finess} - CENTRE HOSPITALIER DE LA COTE BASQUE`); + await expect.soft(page.getByText('*Année des dossiers contrôlés')).toBeVisible(); + await expect.soft(page.locator('input[is_id="0/annee"]')).toHaveValue('2023'); + await expect.soft(page.getByText('*Nom du Médecin Dim')).toBeVisible(); + await expect.soft(page.locator('input[is_id="0/md"]')).toHaveValue('Amina ETTORCHI'); + await expect.soft(page.getByText('*Nombre de champs contrôlés')).toBeVisible(); + await expect.soft(page.locator('input[is_id="0/nb_champs_controles"]')).toHaveValue('5'); + + // Etape 2 + await page.getByText('ETAPE SUIVANTE').click(); + await expect(page.getByText('Etape 2 - Centraliser les documents reçus')).toBeVisible(); + await expect(page.getByText('Télécharger des documents PDF')).toBeVisible(); + await expect(page.getByRole('textbox', { name: 'Document à télécharger' })).toBeVisible(); + + // Retour Etape 1 + await page.getByText('ETAPE PRÉCÉDENTE').click(); + await expect(page.getByText(`Etape 1 - Documenter le contrôle N° 1 - ${finess}`)).toBeVisible(); + + // Etape 3 + await page.getByText('ETAPE SUIVANTE').click(); + await page.getByText('Etape 2 - Centraliser les documents reçus').waitFor({ state: 'visible'}); + await page.getByText('ETAPE SUIVANTE').click(); + await expect(page.getByText('Etape 3- Importer les fichiers DRUIDES à traiter')).toBeVisible(); + await expect.soft(page.getByText('Télécharger les fichiers à traiter')).toBeVisible(); + await expect.soft(page.getByRole('textbox', { name: 'Type de fichier à télécharger' })).toBeVisible(); + + // Retour Etape 2 + await page.getByText('ETAPE PRÉCÉDENTE').click(); + await expect(page.getByText('Etape 2 - Centraliser les documents reçus')).toBeVisible(); + + // Etape 4 + await page.getByText('ETAPE SUIVANTE').click(); + await page.getByText('Etape 3- Importer les fichiers DRUIDES à traiter').waitFor({ state: 'visible'}); + await page.getByText('ETAPE SUIVANTE').click(); + await expect(page.getByRole('cell', { name: 'Il n\'y a aucun fichier à traiter' })).toBeVisible(); + await page.getByText('OK').click(); + + // Quiter + await page.locator('i.fa.fa-close').first().click(); + await page.getByText('Vos contrôles').waitFor({ state: 'visible' }); + + }); + test('c) Ouvrir un contrôle', async ({ page }) => { + // Informations du contrôle + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id="2/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id="2/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + await expect(page.getByText(titre)).toBeVisible(); + await expect(page.locator('li.active span')).toHaveText(`${phaseDuControle}`); + + }); + }); + test.describe('2- Menu', () => { + + test.beforeEach(async ({ page }) => { + // Clic sur l'icone dossier + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id*="/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id*="/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + await page.getByText(titre).waitFor({ state: 'visible', timeout: 20000 }); + await page.getByText(`${phaseDuControle}`).waitFor({ state: 'visible'}); + }); + + test.describe('a) Rapports', () => { + test('i) Initialiser le contrôle', async ({ page }) => { + + await page.getByText('INITIER LE CONTRÔLE', { exact: true }).click(); + await page.locator('h3.t').waitFor({ state: 'visible'}); + //await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('RSS Candidats- Evaluation PMSI -')).toBeVisible(); + + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Indicateurs clés'); + // Analyses + await page.locator('a').filter({ hasText: 'Analyses' }).click(); + await expect(page.getByText('Valorisation des dossiers potentiels')).toBeVisible(); + // Tableau avec tout les champs + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).toBeVisible(); + await expect.soft(page.getByText('Champ 3')).toBeVisible(); + await expect.soft(page.getByText('Champ 4')).toBeVisible(); + await expect.soft(page.getByText('Champ 5')).toBeVisible(); + + // const total = Number(await page.locator('span[is_id="0/Nb"]').textContent()) + Number(await page.locator('span[is_id="1/Nb"]').textContent()) + Number(await page.locator('span[is_id="2/Nb"]').textContent()) + // + Number(await page.locator('span[is_id="3/Nb"]').textContent()) + Number(await page.locator('span[is_id="4/Nb"]').textContent()); + // await expect.soft(page.locator('span[is_id="5/Nb"]')).toHaveText(total.toString()); + + // Filtrer par champs 1 + await page.getByRole('textbox', { name: 'Tous les champs' }).click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 3')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 4')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 5')).not.toBeVisible(); + + // Activité de soin + await page.getByText('Activité de soin').click(); + await expect.soft(page.getByText('Champs déclinés par Activité de soin')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Activité de soin'}).nth(1)).toBeVisible(); + + // Exporter sous Excel + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter sous Excel').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('P0-R1.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + }); + + test('ii) Preparer le contrôle', async ({ page }) => { + await page.getByText('PREPARER LE CONTRÖLE', { exact: true }).click(); + await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('Rapport des dossiers contrôlés au')).toBeVisible(); + await expect.soft(page.getByText('Vue d\'ensemble des séjours contrôlés')).toBeVisible(); + + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Indicateurs clés'); + + // Analyses + await page.locator('a').filter({ hasText: 'Analyse' }).click(); + await expect(page.getByText('Valorisation des dossiers potentiels')).toBeVisible(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).toBeVisible(); + await expect.soft(page.getByText('Champ 3')).toBeVisible(); + await expect.soft(page.getByText('Champ 4')).toBeVisible(); + await expect.soft(page.getByText('Champ 5')).toBeVisible(); + + const total = Number(await page.locator('span[is_id="0/Nb"]').textContent()) + Number(await page.locator('span[is_id="1/Nb"]').textContent()) + Number(await page.locator('span[is_id="2/Nb"]').textContent()) + + Number(await page.locator('span[is_id="3/Nb"]').textContent()) + Number(await page.locator('span[is_id="4/Nb"]').textContent()); + await expect.soft(page.locator('span[is_id="5/Nb"]')).toHaveText(total.toString()); + + // Filtrer par champs 1 + await page.getByRole('textbox', { name: 'Tous les champs' }).click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 3')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 4')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 5')).not.toBeVisible(); + + // Activité de soin + await page.getByText('Activité de soin').click(); + await expect.soft(page.getByText('Champs déclinés par Activité de soin')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Activité de soin'}).nth(1)).toBeVisible(); + + // Exporter sous Excel + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter sous Excel').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('P1-R1.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + }); + + test('iii) Suivre le contrôle', async ({ page }) => { + await page.getByText('SUIVRE LE CONTRÔLE', { exact: true }).click(); + await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('Rapport du contrôle sur site au ')).toBeVisible(); + await expect.soft(page.getByText('Vue d\'ensemble de la Concertation')).toBeVisible(); + + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Indicateurs clés'); + + // Analyses + await page.locator('a').filter({ hasText: 'Analyse Concertation' }).click(); + await expect(page.getByText('Analyse des résultats')).toBeVisible(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).toBeVisible(); + await expect.soft(page.getByText('Champ 3')).toBeVisible(); + await expect.soft(page.getByText('Champ 4')).toBeVisible(); + await expect.soft(page.getByText('Champ 5')).toBeVisible(); + + const total = Number(await page.locator('span[is_id="0/Nb"]').first().textContent()) + Number(await page.locator('span[is_id="1/Nb"]').first().textContent()) + Number(await page.locator('span[is_id="2/Nb"]').first().textContent()) + + Number(await page.locator('span[is_id="3/Nb"]').first().textContent()) + Number(await page.locator('span[is_id="4/Nb"]').first().textContent()); + await expect.soft(page.locator('span[is_id="5/Nb"]').first()).toHaveText(total.toString()); + + // Filtrer par champs 1 + await page.locator('input[value^="Tous les champs"]').click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 2')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 3')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 4')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 5')).not.toBeVisible(); + + // Résultats de la concertation + await page.getByText('Résultat de la concertation').click(); + await expect.soft(page.getByText('Champs déclinés par Résultat')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Résultats'}).nth(1)).toBeVisible(); + + // Exporter sous Excel + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter sous Excel').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('P2-R1.xlsx.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Analyse des DAS + await page.locator('a').filter({ hasText: 'Analyse des DAS' }).click(); + await expect(page.getByText('Analyse des Résultats')).toBeVisible(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 3')).toBeVisible(); + await expect.soft(page.getByText('Champ 4')).toBeVisible(); + await expect.soft(page.getByText('Champ 5')).toBeVisible(); + + // Filtrer par champs 1 + await page.locator('input[value^="Tous les champs"]').click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('Champ 1')).toBeVisible(); + await expect.soft(page.getByText('Champ 3')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 4')).not.toBeVisible(); + await expect.soft(page.getByText('Champ 5')).not.toBeVisible(); + + // Exporter sous Excel + const downloadPromiseDAS = page.waitForEvent('download'); + await page.getByText('Exporter sous Excel').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const downloadDAS = await downloadPromiseDAS; + const suggestedNameDAS = downloadDAS.suggestedFilename(); + expect.soft(suggestedNameDAS).toBe('P2-DAS.xlsx'); + // Enregistrer le fichier + await downloadDAS.saveAs('downloads/' + suggestedNameDAS); + }); + + test('iv) Gerer l\'apres controle', async ({ page }) => { + await page.getByText('GERER L\'APRES CONTRÔLE', { exact: true }).click(); + await page.locator('h3.t').waitFor({ state: 'visible'}); + await expect.soft(page.getByText('Synthèse des indus').nth(1)).toBeVisible(); + + // Naviguer vers les autres onglets + //SUIVRE LE CONTRÖLE + await page.getByText('SUIVRE LE CONTRÔLE', { exact: true }).nth(1).click(); + await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('Vue d\'ensemble de la Concertation')).toBeVisible(); + //PREPARER LE CONTRÖLE + await page.getByText('PREPARER LE CONTRÖLE', { exact: true }).nth(1).click(); + await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('Rapport des dossiers contrôlés au')).toBeVisible(); + await expect.soft(page.getByText('Vue d\'ensemble des séjours contrôlés')).toBeVisible(); + //INITIER LE CONTRôLE + await page.getByText('INITIER LE CONTRÔLE', { exact: true }).nth(1).click(); + await expect(page.locator('h3.t')).toHaveText('Rapports'); + await expect.soft(page.getByText('RSS Candidats- Evaluation PMSI -')).toBeVisible(); + }); + }); + + + test('b) Vos fichiers', async ({ page }) => { + // Deplier le menu Fichiers + await page.getByRole('row', { name: 'Vos fichiers' }).locator('a').nth(1).click(); + await expect.soft(page.getByText('DRUIDES')).toBeVisible(); + await expect.soft(page.getByText('RSS_def')).toBeVisible(); + + // Telecharger la fiche de liaison + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Fichede Liaison').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe(`Fiche_liaison_${finess}.xlsx`); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Ajout de fichier + await page.getByTitle('Télécharger un nouveau fichier').nth(1).click(); + await expect.soft(page.getByText('Télécharger les fichiers à traiter')).toBeVisible(); + }); + + test('c) Vos Documents', async ({ page }) => { + // Deplier le menu Fichiers + await page.getByRole('row', { name: 'Vos Documents' }).locator('a').nth(1).click(); + await expect(page.getByText('Courrier Annonce du Contrôle')).toBeVisible(); + + // Visualiser le courrier d'annonce du contrôle + await page.getByText('Courrier Annonce du Contrôle').click(); + await expect.soft(page.getByText(' DOCUMENT DU CONTRÔLE')).toBeVisible(); + await expect.soft(page.getByText('Composant utilisateur inaccessible')).not.toBeVisible(); + + // Fermer le document + await page.locator('a.IS_icon.IS_FrameCloseButton').click(); + await expect.soft(page.getByText('DOCUMENT DU CONTRÔLE')).not.toBeVisible(); + + // Ajout d'un document + await page.getByTitle('Voir ou rechercher un document').click(); + await expect.soft(page.getByText('Télécharger des documents PDF')).toBeVisible(); + + await page.getByRole('textbox', { name: 'Document à télécharger' }).click(); + await expect(page.getByRole('cell', { name: 'APRES-UCR - Argumentaire' })).toBeVisible(); + await page.getByRole('cell', { name: 'APRES-UCR - Argumentaire' }).click(); + await expect.soft(page.getByRole('button', { name: 'Choose File' })).toBeVisible(); + await page.getByText('Valider').click(); + await expect.soft(page.getByText('Télécharger des documents PDF')).not.toBeVisible(); + }); + + test('d) Vos Envoies', async ({ page }) => { + // Deplier le menu Envoies + await page.getByRole('row', { name: 'Vos envois' }).locator('a').nth(1).click(); + await expect.soft(page.getByText('Document généré pour UCR').first()).toBeVisible(); + + // Visualiser le document généré pour UCR + await page.getByRole('article').filter({ hasText: 'Vos Envois Type de' }).locator('a').nth(2).click(); + await expect(page.getByText(' DOCUMENT GENERE POUR: UCR')).toBeVisible(); + await expect.soft(page.getByText('Composant utilisateur inaccessible')).not.toBeVisible(); + await expect.soft(page.getByText('Template inaccessible')).not.toBeVisible(); + + // Telecharger le fichier + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Télécharger le fichier').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe(`0-${finess}_DocumentPourUCR.html`); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Fermer le document + await page.locator('a.IS_icon.IS_FrameCloseButton').click(); + await expect.soft(page.getByText('DOCUMENT GENERE POUR: UCR')).not.toBeVisible(); + }); + + test('e) Agenda et Notifications', async ({ page }) => { + // Agenda + await expect.soft(page.getByText('Agenda').nth(1)).not.toBeVisible(); + await page.getByText('Agenda').first().click(); + await expect.soft(page.getByText('Agenda').nth(1)).not.toBeVisible(); + + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Agenda'); + // Notifications + await page.getByText('Notifications').first().click(); + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Notifications'); + + // Passer d'un onglet à un autre + await page.locator('a').filter({ hasText: 'INITIER le contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('INITIER le contrôle'); + await expect.soft(page.getByText('Notifications').first()).toBeVisible(); + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Notifications'); + + await page.getByText('Agenda').nth(1).click(); + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Agenda'); + + await page.locator('a').filter({ hasText: 'PREPARER le contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('PREPARER le contrôle'); + await expect.soft(page.getByText('Agenda').nth(1)).toBeVisible(); + await expect.soft(page.locator('li.active span').nth(1)).toHaveText('Agenda'); + + await page.locator('I.fa.fa-close').click(); + await expect.soft(page.getByText('Agenda').nth(1)).not.toBeVisible(); + await expect.soft(page.getByText('Notifications').first()).not.toBeVisible(); + }); + }); + }); + + test.describe('II) INITIER le contrôle', () => { + test.beforeEach(async ({ page }) => { + // Clic sur l'icone dossier + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id*="/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id*="/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + await page.getByText(titre).waitFor({ state: 'visible', timeout: 20000 }); + await page.getByText(`${phaseDuControle}`).waitFor({ state: 'visible'}); + + await page.locator('a').filter({ hasText: 'INITIER le contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('INITIER le contrôle'); + + await expect(page.getByText(`Le contrôle comporte ${nbChamps} champs`)).toBeVisible(); + + }); + + test('1- Liste des champs configurés', async ({ page }) => { + // Cliquer sur le plus rouge + await page.getByText('+', { exact: true }).click(); + await expect.soft(page.getByText(' AJOUT CONFIGURATION')).toBeVisible(); + await page.getByPlaceholder('Numéro du champ').fill('2'); + await page.getByText('Valider').click(); + + await expect.soft(page.getByText('Configuration du champ 2')).toBeVisible(); + await page.getByText('Afficher les champs configurés').click(); + await expect.soft(page.getByText('Liste des champs configurés')).toBeVisible(); + + await page.locator('td[is_id="0/supp"]').click(); + await expect.soft(page.getByRole('cell', { name: 'Confirmer-vous la suppression' })).toBeVisible(); + await page.getByText('Non').last().click(); // Ne pas supprimer le champ + + }); + + test('2- Valorisation des dossiers du RSSDEF', async ({ page }) => { + // Telecharger le fichier + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter sous Excel').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('P0-R1.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Filtrer par champs 1 + await page.getByRole('textbox', { name: 'Tous les champs' }).click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByRole('cell', { name: 'Champ 1', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByText('Champ 2').nth(1)).not.toBeVisible(); + await expect.soft(page.getByText('Champ 3').nth(1)).not.toBeVisible(); + await expect.soft(page.getByText('Champ 4').nth(1)).not.toBeVisible(); + await expect.soft(page.getByText('Champ 5').nth(3)).not.toBeVisible(); + + // Activité de soin + await page.getByText('Activité de soin').click(); + await expect.soft(page.getByText('Champs déclinés par Activité de soin')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Activité de soin'}).nth(1)).toBeVisible(); + + // Sévérité GHM + await page.getByText('Sévérité GHM').click(); + await expect.soft(page.getByText('Champs déclinés par Sévérité GHM')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Sévérité GHM'}).nth(1)).toBeVisible(); + + // Spécialité + await page.getByText('Spécialité').click(); + await expect.soft(page.getByText('Champs déclinés par Spécialité')).toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Spécialité'}).nth(1)).toBeVisible(); + + // Fermer + await page.locator('i.fa.fa-remove').click(); + await expect.soft(page.locator('span', {hasText: 'Activité de soin'}).nth(1)).not.toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Sévérité GHM'}).nth(1)).not.toBeVisible(); + await expect.soft(page.locator('span', {hasText: 'Sévérité GHM'}).nth(1)).not.toBeVisible(); + }); + + }); + + test.describe('III) PREPARER le contrôle', () => { + test.beforeEach(async ({ page }) => { + // Clic sur l'icone dossier + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id*="/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id*="/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + //await page.getByText(titre).waitFor({ state: 'visible', timeout: 20000 }); + await page.getByText(`${phaseDuControle}`).waitFor({ state: 'visible'}); + + await page.locator('a').filter({ hasText: 'PREPARER le contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('PREPARER le contrôle'); + + await page.getByText('Synthèse Préparation').waitFor({ state: 'visible' }); + //await expect.soft(page.getByText('Synthèse Préparation')).toBeVisible(); + await expect.soft(page.getByText('Suivi de la Préparation')).toBeVisible(); + }); + + test.describe('1- Synthèse Préparation (Fiche OGC)', () => { + test.beforeEach(async ({ page }, testInfo) => { + if (testInfo.title === 'g) Ouvrir la fiche avec le numero de séjour') { + return; + } + await page.getByRole('textbox', { name: 'Taper un numéro de séjour ou' }).fill('57'); + await page.locator('header, .IS_Container, body').first().click(); // dehors du champ + + await page.getByText('Fiche OGC 57').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + + }); + + test('a) Changer l\état du dossier', async ({ page }) => { + // Cliquee sur "A risque" + await expect.soft(page.locator('a.IS_button.success').last()).toHaveText('Défendable') + await page.getByText('A risque', { exact: true }).click(); + await expect.soft(page.locator('a.IS_button.warning')).toHaveText('A risque'); + + // Cliquer sur Non défendable + await page.getByText('Non défendable').click(); + await expect.soft(page.locator('a.IS_button.danger')).toHaveText('Non défendable'); + + }); + + test('b) Déplier pour plus d\informations', async ({ page }) => { + await page.locator('a.IS_icon.IS_Minimize_Button.IS_Restore').nth(5).click(); + await expect(page.getByText('Homme de')).toBeVisible(); + await expect(page.getByText('taux de remboursement AM ')).toBeVisible(); + await expect(page.getByText('Le patient a été hospitalisé pendant')).toBeVisible(); + }); + + test('c) Montants brut / AM', async ({ page }) => { + await expect.soft(page.getByRole('radio', { name: 'Montants AM' })).toBeChecked(); + await expect.soft(page.getByText('MNT AM GHS-EXB+EXH', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('MNT AM SUPPL')).toBeVisible(); + await expect.soft(page.getByText('MNT AM GAINS PERTE DU GHS')).toBeVisible(); + + await expect(page.getByRole('radio', { name: 'Montants Brut' })).not.toBeChecked(); + await page.getByRole('radio', { name: 'Montants Brut' }).click(); + await expect(page.getByRole('radio', { name: 'Montants Brut' })).toBeChecked(); + await expect.soft(page.getByText('MNT BR GHS-EXB+EXH', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('MNT BR SUPPL')).toBeVisible(); + await expect.soft(page.getByText('MNT BR GAINS PERTE DU GHS')).toBeVisible(); + }); + + test('d) Forcer le MNT AM = 0', async ({ page }) => { + await page.getByText('Forcer les MNT AM = 0').click(); + await expect(page.getByRole('heading', { name: 'Cochez les étapes' })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'PREPA', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'Toutes les étapes', exact: true })).toBeVisible(); + + await page.getByText('valider et quitter').click(); + await expect.soft(page.getByRole('heading', { name: 'Cochez les étapes' })).not.toBeVisible(); + }); + + test('e) Filtrer les diags et actes modifiés', async ({ page }) => { + await page.getByText('Filtrer les diags et actes modifiés').click(); + await expect(page.getByText('Annuler le filtrage')).toBeVisible(); + + await page.getByText('Annuler le filtrage').click(); + await expect.soft(page.getByText('Filtrer les diags et actes modifiés')).toBeVisible(); + }); + + test('f) Plier déplier', async ({ page }) => { + // Donnees du séjour + await expect.soft(page.getByText('Unité médicale')).toBeVisible(); + await page.locator('a.IS_icon.IS_Minimize_Button').nth(7).click(); + await expect.soft(page.getByText('Unité médicale')).not.toBeVisible(); + + // Tableau de synthése + await expect.soft(page.getByRole('cell', { name: 'NB EXH', exact: true })).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'NB SUPPL SRC', exact: true })).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'NB SUPPL STF', exact: true })).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'IGS', exact: true })).not.toBeVisible(); + await page.locator('a.IS_icon.IS_Minimize_Button').nth(9).click(); + await page.waitForTimeout(1000); // attendre l'animation + await expect.soft(page.getByRole('cell', { name: 'NB EXH', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'NB SUPPL SRC', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'NB SUPPL STF', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'IGS', exact: true })).toBeVisible(); + + // Dates et modes d'entrée sortie + await expect.soft(page.getByRole('cell', { name: 'Prépa', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'Entrée Sortie', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_Minimize_Button').nth(10).click(); + await page.waitForTimeout(1000); // attendre l'animation + await expect.soft(page.getByRole('cell', { name: 'Prépa', exact: true })).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'Entrée Sortie', exact: true })).not.toBeVisible(); + + // Diagnostiques + await expect.soft(page.getByRole('cell', { name: 'ETAB', exact: true }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'DP', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'DR', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_Minimize_Button').nth(11).click(); + await page.waitForTimeout(1000); // attendre l'animation + await expect.soft(page.getByRole('cell', { name: 'ETAB', exact: true }).nth(2)).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'DP', exact: true }).nth(1)).not.toBeVisible(); + await expect.soft(page.getByRole('cell', { name: 'DR', exact: true })).not.toBeVisible(); + + // Actes + await expect.soft(page.getByRole('cell', { name: 'ETAB', exact: true }).nth(1)).toBeVisible(); + await page.locator('a.IS_icon.IS_Minimize_Button').nth(12).click(); + await page.waitForTimeout(1000); // attendre l'animation + await expect.soft(page.getByRole('cell', { name: 'ETAB', exact: true }).nth(1)).not.toBeVisible(); + + // Fermer sans sauvegarder + await page.getByTitle('Fermer la fenêtre').click(); + await expect.soft(page.getByRole('heading', { name: 'Confirmez' })).toBeVisible(); // vérifier que les modifications n'ont pas été sauvegardées + await page.getByText('Oui', { exact: true }).click(); + await expect.soft(page.getByText('Fiche OGC 57')).not.toBeVisible(); + }); + + test('g) Ouvrir la fiche avec le numero de séjour', async ({ page }) => { + await page.getByRole('textbox', { name: 'Taper un numéro de séjour ou' }).fill('2300394920230301'); + await page.locator('header, .IS_Container, body').first().click(); // dehors du champ + + await page.getByText('Fiche OGC 57').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + }); + + }); + + test.describe('2- Suivi de Préparation', () => { + test('a) Filtre dossier défondables', async ({ page }) => { + await page.getByRole('row', { name: 'Dossiers défendables ?' }).locator('a').click(); + await expect.soft(page.getByRole('cell', { name: '706 séj', exact: true })).toBeVisible(); + + await page.getByText('Rien').click(); + await expect.soft(page.locator('td[is_id="0/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="2/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="3/choix"] input')).not.toBeChecked(); + + // Cocher A risque + await page.locator('td[is_id="1/choix"] input').click(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).toBeChecked(); + await expect.soft(page.getByText('Filtre Défendable = A risque')).toBeVisible(); + + // Tout cocher + await page.getByText('Tout', { exact: true }).click(); + await expect.soft(page.locator('td[is_id="0/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="2/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="3/choix"] input')).toBeChecked(); + + }); + + test('Filtrage UM', async ({ page }) => { + await page.getByRole('row', { name: 'Filtrage UM ...+' }).locator('a').click(); + await expect(page.getByText('Séléctionner un UM dans la liste')).toBeVisible(); + await expect(page.getByRole('textbox', { name: 'Liste des UM' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Liste des UM' }).click(); + await page.getByRole('cell', { name: '0147' }).click(); + await expect.soft(page.getByText('Filtre UM = 047')).toBeVisible(); + + await page.locator('i.fa.fa-close').click(); + await expect.soft(page.getByText('Filtre UM = 047')).not.toBeVisible(); + }); + + test('c) CMA et GHM', async ({ page }) => { + await expect(page.getByRole('radio', { name: 'Sévérité du GHM' })).toBeChecked(); + await expect(page.getByRole('radio', { name: 'CMA du diagnostic' })).not.toBeChecked(); + await expect.soft(page.getByText('Répartition des OGC par champ et sévérité du GHM')).toBeVisible(); + await page.getByRole('radio', { name: 'CMA du diagnostic' }).click(); + await expect(page.getByRole('radio', { name: 'CMA du diagnostic' })).toBeChecked(); + await expect(page.getByRole('radio', { name: 'Sévérité du GHM' })).not.toBeChecked(); + await expect.soft(page.getByText('Répartition des OGC par champ et par CMA(DA)')).toBeVisible(); + }); + }); + + test.describe('3- Liste des OGC', () => { + test.beforeEach(async ({ page }, testInfo) => { + if (testInfo.title === 'f) Ouvrir la liste OGC spécifique') { + return; + } + await page.getByText('56séj').click(); + await page.getByRole('cell', { name: 'Liste des OGC filtrés' }).waitFor({ state: 'visible' }); + }); + + test('a) Exporter la liste', async ({ page }) => { + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter La liste des OGC').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('Liste_OGC_Selectionnés_PREPA.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + }); + + test('b) Exporter les argumentaires', async ({ page }) => { + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter les argumentaires').click(); + await expect.soft(page.getByRole('heading', { name: 'Fichiers Argumentaires' })).toBeVisible(); + await page.getByText('Oui', { exact: true }).click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('Argufiles_'); + expect.soft(suggestedName).toContain('.zip'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + }); + + test('c) Ouvrir les argumentaires', async ({ page }) => { + await page.locator('Div[style="top:0px"] div.l0.r0 a').first().click(); + await page.getByRole('heading', { name: 'OGC : 1 - Séjour' }).waitFor({ state: 'visible' }); + await expect.soft(page.getByText('ARGUMENTAIRES OGC ')).toBeVisible(); + // Télécharger les argumentaires + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter les argumentaires').nth(1).click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('ExportArgu.html'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Memo + await page.getByText('Mémo').nth(1).click(); + await expect.soft(page.getByRole('heading', { name: 'Mémo', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').nth(1).click(); + + // Recherche de saisines + await page.getByText('Recherche de saisines').click(); + await expect.soft(page.getByRole('textbox', { name: 'Rechercher un code ou un terme' })).toBeVisible(); + await expect.soft(page.getByText('Saisines : 191')).toBeVisible(); + await expect.soft(page.getByText('Agora :')).toBeVisible(); + await page.getByRole('textbox', { name: 'Rechercher un code ou un terme' }).fill('transfusion'); + await page.getByTitle('Rechercher', { exact: true }).click(); + await expect.soft(page.getByText('Saisines : 6')).toBeVisible(); + await expect.soft(page.getByText('Agora : ')).toBeVisible(); + await expect.soft(page.getByText('Transfusion sanguine en DAS')).toBeVisible(); + await page.getByText('Transfusion sanguine en DAS').click(); + await expect.soft(page.getByText('transfusion sanguine en DAS').nth(1)).toBeVisible(); + await expect.soft(page.getByText('Un dossier concerne un')).toBeVisible(); + + // Agora + await page.getByText('Agora : ').click(); + await expect.soft(page.getByText('sujets trouvés sur Agora')).toBeVisible(); + await expect.soft(page.locator('td[is_id="34/titre"]')).toBeVisible(); + await page.getByText('Patient avec anémie traitée par transfusion : choix du DP (8 occurences)').click(); + await expect.soft(page.getByText('Patient avec anémie traitée par transfusion : choix du DP', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Source : Agora, sujet N°')).toBeVisible(); + const tdAgora = page.locator('div.IS_Container.IS_VFlowLayout.verticalScroll').nth(3); + + // Vérifier que tous les "transfusion" sont dans des + const allMarked = await tdAgora.evaluate((element) => { + const text = element.textContent || ''; + const totalCount = (text.match(/transfusion/gi) || []).length; + + const markedCount = element.querySelectorAll('mark').length; + const markedTexts = Array.from(element.querySelectorAll('mark')) + .filter(mark => /transfusion/i.test(mark.textContent || '')) + .length; + + return { + totalTransfusions: totalCount, + markedTransfusions: markedTexts, + allAreMarked: totalCount === markedTexts && totalCount > 0 + }; + }); + + expect.soft(allMarked.allAreMarked).toBe(true); + await page.getByRole('link', { name: '53310' }).click(); + const [newPage] = await Promise.all([ + page.waitForEvent('popup'), + page.getByRole('link', { name: '53310' }).click() + ]); + + await newPage.waitForLoadState(); + + await expect(newPage).toHaveURL(/connect-pasrel\.atih\.sante\.fr\/cas\/login/); + + // Recherche de Diags ou Actes + await page.getByText('Recherche de Diags ou Actes').click(); + await expect.soft(page.getByText('Recherche de code')).toBeVisible(); + await expect.soft(page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' })).toBeVisible(); + await page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' }).fill('K8'); + await expect.soft(page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' })).toBeVisible(); + await page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' }).click(); + + // changement d'onglet + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + await page.getByText('DIM Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('DIM Argumentaire'); + await page.getByText('Contrôleur Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Contrôleur Argumentaire'); + + await page.locator('a.IS_icon.IS_FrameCloseButton.hideCloseButton.hideCloseButton').click(); + await expect.soft(page.locator('Div[style="top:0px"] div.l0.r0 a').first()).toHaveAttribute('title', 'Des argumentaires et un mémo ont été saisis'); + }); + + test('d) Documments justificatifs', async ({ page }) => { + await page.locator('Div[style="top:0px"] div.l1.r1 a').first().click(); + await expect(page.getByText('Documents Justificatifs', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Seuls les documents PDF sont affichables')).toBeVisible(); + + //await page.getByTitle('Télécharger un scan').click(); + //await expect.soft(page.getByRole('heading', { name: 'Télécharger des documents PDF' })).toBeVisible(); + + //await page.getByRole('row', { name: 'Télécharger des documents PDF' }).locator('a').click(); + //await expect.soft(page.getByRole('heading', { name: 'Télécharger des documents PDF' })).not.toBeVisible(); + + await page.locator('i.fa.fa-folder').first().click(); + await expect.soft(page.locator('ul.active li')).toBeVisible(); + await page.locator('ul.active li').click(); + // Version originale + await expect(page.getByRole('heading', { name: '.pdf' })).toBeVisible(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toHaveText('Version originale'); + + // Télecharger le justificatif original + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('.pdf'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Version modifiée + await page.getByText('Version modifiée').click(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toContainText('Version modifiée'); + + //Défiler entre les pages + await page.getByRole('cell', { name: 'Page 1' }).locator('a').click(); + await page.waitForTimeout(1000); // attendre le chargement + //if (await page.getByRole('cell', { name: 'Page 2' }).first().isVisible()) { + await page.getByRole('cell', { name: 'Page 2' }).first().click(); + + //} + await expect.soft(page.getByRole('cell', { name: 'Page 2' })).toBeVisible(); + // Retour à la page 1 avec la flèche gauche + await page.getByTitle('Page précédente').click(); + await expect.soft(page.getByRole('cell', { name: 'Page 1' })).toBeVisible(); + + + // Télecharger le justificatif modifié + const downloadPromiseModif = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const downloadModif = await downloadPromiseModif; + const suggestedNameModif = downloadModif.suggestedFilename(); + expect.soft(suggestedNameModif).toContain('modif.pdf'); + // Enregistrer le fichier + await downloadModif.saveAs('downloads/' + suggestedNameModif); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: '.pdf' })).not.toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByText('Documents Justificatifs', { exact: true })).not.toBeVisible(); + + }); + + test('e) Ouvrir la fiche OGC', async({page}) => { + await page.locator('div[style="top:0px"] div.l2.r2 span').click(); + await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + // Argumentaire + await page.locator('i.fa.fa-Commenting').last().click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + await page.getByText('DIM Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/DIM\s*ARGUMENTAIRE/i); + + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + }); + + test('f) Ouvrir la liste OGC spécifique', async({page}) => { + await page.getByTitle('montant 40 706€').click(); + await page.getByText('Liste des OGC filtrés').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('num champ 1')).toBeVisible(); + await expect.soft(page.getByText('Nb séjours préparation Reval 8')).toBeVisible(); + }); + }); + + test.describe('4- Fiche OGC', () => { + test.beforeEach(async ({ page }) => { + await page.getByTitle('montant 40 706€').click(); + await page.getByText('Liste des OGC filtrés').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('num champ 1')).toBeVisible(); + await expect.soft(page.getByText('Nb séjours préparation Reval 8')).toBeVisible(); + + await page.getByText('n°3', { exact: true }).click(); + await page.getByText('Fiche OGC 3').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + + }); + + test('a) Ajouter/Supprimer un diagnostique', async ({ page }) => { + // Ajout + await page.getByTitle('Ajouter des diagnostics').first().click(); + await expect(page.getByRole('heading', { name: 'Ajout de diagnostics' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Saisir un code ou un mot et cliquer sur entrée pour voir les resultats' }).fill('K850'); + await page.locator('a.IS_button.transparentBackGround i.fa.fa-search').click(); + await expect(page.getByText('K850*PANCREATITE AIG. IDIOP')).toBeVisible(); + await page.getByText('K850*PANCREATITE AIG. IDIOP').click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('DA : K850-PANCREATITE AIG. IDIOP')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).toBeVisible(); + + // Suppression + await page.getByRole('row', { name: 'K850 Pancreatite Aig.' }).locator('a[title="supprimmer le DA"]').click(); + await expect.soft(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).not.toBeVisible(); + }); + + test('a) Ajouter/Supprimer un Acte', async ({ page }) => { + // Ajout + await page.getByTitle('Ajouter des diagnostics').last().click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).toBeVisible(); + + await page.getByRole('combobox', { name: 'Taper des mots clé' }).fill('Neurochirurgie'); + await expect(page.getByRole('option', { name: 'YYYY189' })).toBeVisible(); + await page.getByRole('option', { name: 'YYYY189' }).click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('YYYY189 Activite 1 ajouté')).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/delete"]')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).not.toBeVisible(); + await expect(page.getByRole('row', { name: 'YYYY189' })).toBeVisible(); + + // Suppression + await page.getByText('Prépa', { exact: true }).nth(3).click(); + await page.waitForTimeout(1000); + await page.getByRole('row', { name: 'YYYY189' }).locator('a[title="supprimmer le DA"]').click(); + await expect.soft(page.getByRole('row', { name: 'YYYY189' })).not.toBeVisible(); + }); + }); + + }); + + test.describe('IV) Suivre le contrôle', () => { + test.beforeEach(async ({ page }) => { + // Clic sur l'icone dossier + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id*="/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id*="/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + //await page.getByText(titre).waitFor({ state: 'visible', timeout: 20000 }); + await page.getByText(`${phaseDuControle}`).waitFor({ state: 'visible'}); + + await page.locator('a').filter({ hasText: 'SUIVRE le contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('SUIVRE le contrôle'); + + await expect.soft(page.getByText('Synthèse des dossiers')).toBeVisible(); + await expect.soft(page.getByText('Suivi du contrôle')).toBeVisible(); + }); + + test('1- Filtre', async ({ page }) => { + await page.getByRole('row', { name: 'Déplier pour filtrer' }).locator('a').click(); + + // OGC + await expect.soft(page.getByText('706 OGC', { exact: true })).toBeVisible(); + await page.getByPlaceholder('Ogc ou Séj').fill('57'); + await page.locator('header, .IS_Container, body').first().click(); //Cliquer en dehors du champ + await expect.soft(page.getByText('1 OGC', { exact: true }).first()).toBeVisible(); + // Réinitialiser le filtre + await page.getByPlaceholder('Ogc ou Séj').fill(''); + await page.getByText('Déplier pour filtrer').click(); //Cliquer en dehors du champ + await expect.soft(page.getByText('706 OGC', { exact: true })).toBeVisible(); + + // Champs + await page.getByRole('textbox', { name: 'Tous les champs de contrôle' }).click(); + await page.getByRole('row', { name: 'Champ 1', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('TotalChamp 1')).toBeVisible(); + await expect.soft(page.getByText('56 OGC', { exact: true }).first()).toBeVisible(); + // Réinitialiser le filtre + await page.getByRole('textbox', { name: 'Tous les champs de contrôle' }).click(); + await page.getByRole('row', { name: 'Tous les champs', exact: true }).getByRole('cell').click(); + + // Dossiers préparés ou non + await page.getByRole('textbox', { name: 'Tous les dossiers préparés ou non' }).click(); + await page.getByRole('row', { name: 'Tous les OGC préparés', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('699 OGC', { exact: true }).first()).toBeVisible(); + + // Dossiers concertés ou non + await page.getByRole('textbox', { name: 'Tous les dossiers concertés ou non' }).click(); + await page.getByRole('row', { name: 'OGC Concertés Accord', exact: true }).getByRole('cell').click(); + await expect.soft(page.getByText('552 OGC', { exact: true }).first()).toBeVisible(); + + // Dossier défendable ? + await page.getByRole('row', { name: 'Dossiers défendables ?' }).locator('a').click(); + //await expect.soft(page.getByRole('cell', { name: '706 séj', exact: true })).toBeVisible(); + + await page.getByText('Rien').click(); + await expect.soft(page.locator('td[is_id="0/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="2/choix"] input')).not.toBeChecked(); + await expect.soft(page.locator('td[is_id="3/choix"] input')).not.toBeChecked(); + + // Cocher A risque + await page.locator('td[is_id="1/choix"] input').click(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).toBeChecked(); + await expect.soft(page.getByText('Supprimmer les filtres')).toBeVisible(); + + // Tout cocher + await page.getByText('Tout', { exact: true }).click(); + await expect.soft(page.locator('td[is_id="0/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="1/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="2/choix"] input')).toBeChecked(); + await expect.soft(page.locator('td[is_id="3/choix"] input')).toBeChecked(); + + // Filtrage UM + await page.getByRole('row', { name: 'Filtrage UM ...+' }).locator('a').click(); + await expect(page.getByText('Séléctionner un UM dans la liste')).toBeVisible(); + await expect(page.getByRole('textbox', { name: 'Liste des UM' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Liste des UM' }).click(); + await page.getByRole('cell', { name: '0147' }).click(); + await expect.soft(page.getByRole('cell', { name: '2 OGC', exact: true })).toBeVisible(); + + await page.locator('i.fa.fa-close').click(); + await page.getByRole('cell', { name: '552 OGC', exact: true }).waitFor({ state: 'visible'}); + //await expect.soft(page.getByRole('cell', { name: '552 OGC', exact: true })).toBeVisible(); + + }); + + test.describe('3- Liste des OGC', () => { + test.beforeEach(async ({ page }, testInfo) => { + await page.locator('a[is_id^="0/MD R"]').click(); + await page.getByRole('cell', { name: 'Liste des OGC filtrés' }).waitFor({ state: 'visible' }); + }); + + test('a) Exporter la liste', async ({ page }) => { + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter La liste des OGC').click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toBe('Liste_OGC_Selectionnés_PENDANT.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + }); + + test('b) Exporter les argumentaires', async ({ page }) => { + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter les argumentaires').click(); + await expect.soft(page.getByRole('heading', { name: 'Fichiers Argumentaires' })).toBeVisible(); + await page.getByText('Oui', { exact: true }).click(); + await page.waitForTimeout(3000); // attente du téléchargement + //tester si le nom du fichier est correct + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('Argufiles_'); + expect.soft(suggestedName).toContain('.zip'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + }); + + test('c) Ouvrir les argumentaires', async ({ page }) => { + await page.locator('Div[style="top:0px"] div.l0.r0 a').first().click(); + await page.getByRole('heading', { name: 'OGC : 17 - Séjour' }).waitFor({ state: 'visible'}); + await expect.soft(page.getByText('ARGUMENTAIRES OGC ')).toBeVisible(); + // Télécharger les argumentaires + //const downloadPromise = page.waitForEvent('download'); + //await page.getByText('Exporter les argumentaires').nth(1).click(); + //const download = await downloadPromise; + //const suggestedName = download.suggestedFilename(); + //expect.soft(suggestedName).toContain('ExportArgu.html'); + // Enregistrer le fichier + //await download.saveAs('downloads/' + suggestedName); + + // Memo + await page.getByText('Mémo').nth(1).click(); + await expect.soft(page.getByRole('heading', { name: 'Mémo', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').nth(1).click(); + + // Recherche de saisines + await page.getByText('Recherche de saisines').click(); + await expect.soft(page.getByRole('textbox', { name: 'Rechercher un code ou un terme' })).toBeVisible(); + await expect.soft(page.getByText('Saisines :')).toBeVisible(); + await expect.soft(page.getByText('Agora : ')).toBeVisible(); + await page.getByRole('textbox', { name: 'Rechercher un code ou un terme' }).fill('transfusion'); + await page.getByTitle('Rechercher', { exact: true }).click(); + await expect.soft(page.getByText('Saisines :')).toBeVisible(); + await expect.soft(page.getByText('Agora :')).toBeVisible(); + await expect.soft(page.getByText('Transfusion sanguine en DAS')).toBeVisible(); + await page.getByText('Transfusion sanguine en DAS').click(); + await expect.soft(page.getByText('transfusion sanguine en DAS').nth(1)).toBeVisible(); + await expect.soft(page.getByText('Un dossier concerne un')).toBeVisible(); + + // Agora + await page.getByText('Agora :').click(); + await expect.soft(page.getByText(' sujets trouvés sur Agora')).toBeVisible(); + await expect.soft(page.locator('td[is_id="34/titre"]')).toBeVisible(); + await page.getByText('Patient avec anémie traitée par transfusion : choix du DP (8 occurences)').click(); + await expect.soft(page.getByText('Patient avec anémie traitée par transfusion : choix du DP', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Source : Agora, sujet N°')).toBeVisible(); + await page.getByRole('link', { name: '53310' }).click(); + const [newPage] = await Promise.all([ + page.waitForEvent('popup'), + page.getByRole('link', { name: '53310' }).click() + ]); + + await newPage.waitForLoadState(); + + await expect(newPage).toHaveURL(/connect-pasrel\.atih\.sante\.fr\/cas\/login/); + + // Recherche de Diags ou Actes + await page.getByText('Recherche de Diags ou Actes').click(); + await expect.soft(page.getByText('Recherche de code')).toBeVisible(); + await expect.soft(page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' })).toBeVisible(); + await page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' }).fill('K8'); + await expect.soft(page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' })).toBeVisible(); + await page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' }).click(); + + // changement d'onglet + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + await page.getByText('DIM Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('DIM Argumentaire'); + await page.getByText('Contrôleur Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Contrôleur Argumentaire'); + + await page.locator('a.IS_icon.IS_FrameCloseButton.hideCloseButton.hideCloseButton').click(); + await expect.soft(page.locator('Div[style="top:0px"] div.l0.r0 a').first()).toHaveAttribute('title', 'Des argumentaires et un mémo ont été saisis'); + }); + + test('d) Documments justificatifs', async ({ page }) => { + await page.locator('Div[style="top:0px"] div.l1.r1 a').first().click(); + await expect(page.getByText('Documents Justificatifs', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Seuls les documents PDF sont affichables')).toBeVisible(); + + //await page.getByTitle('Télécharger un scan').click(); + //await expect.soft(page.getByRole('heading', { name: 'Télécharger des documents PDF' })).toBeVisible(); + + //await page.getByRole('row', { name: 'Télécharger des documents PDF' }).locator('a').click(); + //await expect.soft(page.getByRole('heading', { name: 'Télécharger des documents PDF' })).not.toBeVisible(); + + await page.locator('i.fa.fa-folder').first().click(); + await expect.soft(page.locator('ul.active li')).toBeVisible(); + await page.locator('ul.active li').click(); + // Version originale + await expect(page.getByRole('heading', { name: '.pdf' })).toBeVisible(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toHaveText('Version originale'); + + // Télecharger le justificatif original + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('.pdf'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Version modifiée + await page.getByText('Version modifiée').click(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toContainText('Version modifiée'); + + //Défiler entre les pages + await page.getByRole('cell', { name: 'Page 1' }).locator('a').click(); + await page.waitForTimeout(1000); // attendre le chargement + //if (await page.getByRole('cell', { name: 'Page 2' }).first().isVisible()) { + await page.getByRole('cell', { name: 'Page 2' }).first().click(); + + //} + await expect.soft(page.getByRole('cell', { name: 'Page 2' })).toBeVisible(); + // Retour à la page 1 avec la flèche gauche + await page.getByTitle('Page précédente').click(); + await expect.soft(page.getByRole('cell', { name: 'Page 1' })).toBeVisible(); + + + // Télecharger le justificatif modifié + const downloadPromiseModif = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const downloadModif = await downloadPromiseModif; + const suggestedNameModif = downloadModif.suggestedFilename(); + expect.soft(suggestedNameModif).toContain('modif.pdf'); + // Enregistrer le fichier + await downloadModif.saveAs('downloads/' + suggestedNameModif); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: '.pdf' })).not.toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByText('Documents Justificatifs', { exact: true })).not.toBeVisible(); + + }); + + test.describe('e) Fiche OGC', () => { + test.beforeEach(async ({ page }) => { + await page.locator('div[style="top:0px"] div.l2.r2 span').click(); + await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + await expect.soft(page.locator('a[is_id="0/PMD"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/MC"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/MD"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/CC"]').first()).toBeVisible(); + }); + + test('i) Contrôleur', async ({ page }) => { + // Recopie l'ensemble du codage de la prepa + await expect.soft(page.getByRole('cell', { name: '07C131' }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2347' }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '3 261 €' }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-1 545 €' }).nth(2)).toBeVisible(); + await page.getByTitle('Recopie l\'ensemble du codage de la PREPA (tout rum)').click(); + await expect.soft(page.locator('td[is_id="1/MC"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="2/MC"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="3/MC"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="4/MC"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '0 €' }).nth(4)).toBeVisible(); + + // Recopie l'ensemble du codage de l'etab + await page.getByTitle('Recopie l\'ensemble du codage de l\'ETAB (tout rum)').click(); + await expect.soft(page.locator('td[is_id="0/MC"] i.fa.fa-check').first()).toBeVisible(); + + // Ajout Diagnostic + await page.getByTitle('Ajouter des diagnostic', { exact: true }).nth(1).click(); + await expect(page.getByRole('heading', { name: 'Ajout de diagnostics' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Saisir un code ou un mot et cliquer sur entrée pour voir les resultats' }).fill('K850'); + await page.locator('a.IS_button.transparentBackGround i.fa.fa-search').click(); + await expect(page.getByText('K850*PANCREATITE AIG. IDIOP')).toBeVisible(); + await page.getByText('K850*PANCREATITE AIG. IDIOP').click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('DA : K850-PANCREATITE AIG. IDIOP')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).toBeVisible(); + + // Suppression + await page.getByRole('row', { name: 'K850 Pancreatite Aig.' }).locator('i.fa.fa-trash').nth(1).click(); + await expect.soft(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).not.toBeVisible(); + + // Ajout Acte + await page.getByTitle('Ajouter des diagnostic', { exact: true }).nth(3).click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).toBeVisible(); + + await page.getByRole('combobox', { name: 'Taper des mots clé' }).fill('Neurochirurgie'); + await expect(page.getByRole('option', { name: 'YYYY189' })).toBeVisible(); + await page.getByRole('option', { name: 'YYYY189' }).click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('YYYY189 Activite 1 ajouté')).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/delete"]')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).not.toBeVisible(); + await expect(page.getByRole('row', { name: 'YYYY189' })).toBeVisible(); + + // Suppression + await page.getByText('Contrôleur', { exact: true }).nth(3).click(); + await page.waitForTimeout(1000); + await page.locator('a[is_id="0/MC_del"]').nth(6).click(); + await expect.soft(page.getByRole('row', { name: 'YYYY189' })).not.toBeVisible(); + + // Argumentaire + await page.locator('a[is_id="0/MC"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Contrôleur\s*ARGUMENTAIRE/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + }); + + test('ii) DIM', async ({ page }) => { + // Recopie l'ensemble du codage du medecin controleur + await expect.soft(page.getByRole('cell', { name: '07C133', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2349', exact: true })).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '6 977 €'}).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2 171 €'}).nth(2)).toBeVisible(); + await page.getByTitle('Recopie l\'ensemble du codage du Médecin contrôleur(tout rum)').click(); + await expect.soft(page.getByRole('cell', { name: '07C131' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2347' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '3 261 €' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-1 545 €' }).nth(3)).toBeVisible(); + + // Recopie l'ensemble du codage de la prepa + await page.getByTitle('recopie l\'ensemble du codage de la préparation(tout rum)').click(); + await expect.soft(page.locator('td[is_id="1/MD"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="2/MD"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="3/MD"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.locator('td[is_id="4/MD"] i.fa.fa-check').first()).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '0 €' }).nth(4)).toBeVisible(); + + // Ajout Diagnostic + await page.getByTitle('Ajouter des diagnostics').nth(2).click(); + await expect(page.getByRole('heading', { name: 'Ajout de diagnostics' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Saisir un code ou un mot et cliquer sur entrée pour voir les resultats' }).fill('K850'); + await page.locator('a.IS_button.transparentBackGround i.fa.fa-search').click(); + await expect(page.getByText('K850*PANCREATITE AIG. IDIOP')).toBeVisible(); + await page.getByText('K850*PANCREATITE AIG. IDIOP').click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('DA : K850-PANCREATITE AIG. IDIOP')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).toBeVisible(); + + // Suppression + await page.getByRole('row', { name: 'K850 Pancreatite Aig.' }).locator('i.fa.fa-trash').nth(1).click(); + await expect.soft(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).not.toBeVisible(); + + // Ajout Acte + await page.getByTitle('Ajouter des diagnostics').nth(4).click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).toBeVisible(); + + await page.getByRole('combobox', { name: 'Taper des mots clé' }).fill('Neurochirurgie'); + await expect(page.getByRole('option', { name: 'YYYY189' })).toBeVisible(); + await page.getByRole('option', { name: 'YYYY189' }).click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('YYYY189 Activite 1 ajouté')).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/delete"]')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).not.toBeVisible(); + await expect(page.getByRole('row', { name: 'YYYY189' })).toBeVisible(); + + // Suppression + await page.getByText('DIM', { exact: true }).nth(5).click(); + await page.waitForTimeout(1000); + await page.locator('a[is_id="0/MD_del"]').nth(6).click(); + await expect.soft(page.getByRole('row', { name: 'YYYY189' })).not.toBeVisible(); + + // Argumentaire + // DIM + await page.locator('a[is_id="0/MD"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/DIM\s*ARGUMENTAIRE/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + }); + + test('iii) Concertation', async ({ page }) => { + // Recopie l'ensemble du codage du medecin controleur + await expect.soft(page.getByRole('cell', { name: '07C131' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2347' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '3 261' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-1 545 €' }).nth(3)).toBeVisible(); + // Recopie l'ensemble du codage du DIM + await page.getByTitle('Recopie l\'ensemble du codage du DIM(tout rum)').click(); + await expect.soft(page.getByRole('cell', { name: '07C133', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2349', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '6 977 €'}).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2 171 €'}).nth(3)).toBeVisible(); + + // Recopie l'ensemble du codage du controleur + await page.getByTitle('recopie l\'ensemble du codage du MEDECIN CONTRÔLEUR(tout rum)').click(); + await expect.soft(page.getByRole('cell', { name: '07C131' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2347' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '3 261 €' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-1 545 €' }).nth(3)).toBeVisible(); + + // Ajout Diagnostic + await page.getByTitle('Ajouter des diagnostic', { exact: true }).nth(2).click(); + await expect(page.getByRole('heading', { name: 'Ajout de diagnostics' })).toBeVisible(); + + await page.getByRole('textbox', { name: 'Saisir un code ou un mot et cliquer sur entrée pour voir les resultats' }).fill('K850'); + await page.locator('a.IS_button.transparentBackGround i.fa.fa-search').click(); + await expect(page.getByText('K850*PANCREATITE AIG. IDIOP')).toBeVisible(); + await page.getByText('K850*PANCREATITE AIG. IDIOP').click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('DA : K850-PANCREATITE AIG. IDIOP')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).toBeVisible(); + + // Suppression + await page.getByRole('row', { name: 'K850 Pancreatite Aig.' }).locator('i.fa.fa-trash').nth(2).click(); + await expect.soft(page.getByRole('row', { name: 'K850 Pancreatite Aig.' })).not.toBeVisible(); + + // Ajout Acte + await page.getByTitle('Ajouter des actes').nth(1).click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).toBeVisible(); + + await page.getByRole('combobox', { name: 'Taper des mots clé' }).fill('Neurochirurgie'); + await expect(page.getByRole('option', { name: 'YYYY189' })).toBeVisible(); + await page.getByRole('option', { name: 'YYYY189' }).click(); + await expect(page.getByTitle('Cliquer pour ajouter ce diagnostic')).toBeVisible(); + await page.getByTitle('Cliquer pour ajouter ce diagnostic').click(); + await expect.soft(page.getByText('YYYY189 Activite 1 ajouté')).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/delete"]')).toBeVisible(); + + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByRole('heading', { name: 'Saisie des actes' })).not.toBeVisible(); + await expect(page.getByRole('row', { name: 'YYYY189' })).toBeVisible(); + + // Suppression + await page.getByText('Concertation').nth(10).click(); + await page.waitForTimeout(1000); + await page.getByRole('row', { name: '24/05/2023  1 acte YYYY189 R' }).locator('a').nth(3).click(); + await expect.soft(page.getByRole('row', { name: 'YYYY189' })).not.toBeVisible(); + + }); + }); + + }); + }); +/* + test.describe('V) Gérer l\'après contrôle', () => { + test.beforeEach(async ({ page }) => { + // Clic sur l'icone dossier + const nomEtablissement = await page.getByTitle('Ouvrir 0').textContent(); + const nomEtab = nomEtablissement?.split(' - ').pop()?.trim(); + const annee = "2023"; //await page.locator('span[is_id="1/annee"]').textContent(); + const nbChamps = "5"; //await page.locator('span[is_id="1/nb_champs_controles"]').textContent(); + const phaseDuControle = 'GERER l\'après contrôle'; + + // Clic sur l'icone dossier + //await expect(page.getByTitle('Ouvrir 0').first()).toBeVisible(); + //await page.getByTitle('Ouvrir 0').first().click(); + + await expect(page.locator('a[is_id*="/Voir"]').last()).toBeVisible(); + await page.locator('a[is_id*="/Voir"]').last().click(); + + //Première arrivée + const titre = `Contrôle ${nomEtab} ${annee}${nbChamps} Champs contrôlés`; + //await page.getByText(titre).waitFor({ state: 'visible', timeout: 20000 }); + await page.getByText(`${phaseDuControle}`).waitFor({ state: 'visible'}); + + //await page.locator('a').filter({ hasText: 'GERER l\'après contrôle' }).click(); + await expect.soft(page.locator('li.active span').first()).toHaveText('GERER l\'après contrôle'); + + await expect.soft(page.getByText('Suivi et actions post concertation')).toBeVisible(); + await expect.soft(page.getByText('Synthèse des indus')).toBeVisible(); + + await expect.soft(page.locator('a.active').nth(1)).toHaveText('Vue d\'ensemble'); + }); + + test.describe('1- UCR', () => { + test.beforeEach(async ({ page }, testInfo) => { + await page.getByText('UCR', { exact: true }).click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('UCR'); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Préparer l\'Envoi UCR'); + + }); + + test.describe('a) Préparer l\'Envoi UCR', () => { + test('i) Filtre', async ({ page }) => { + // Tour désélectionner + await page.getByText('Désélectionner tout').click(); + await expect.soft(page.locator('div.l0.r0 input').first()).not.toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(1)).not.toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(2)).not.toBeChecked(); + + // Cocher les désaccords + await page.getByText('Cocher les dossiers en désaccords').click(); + await expect.soft(page.locator('div.l0.r0 input').first()).toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(1)).toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(2)).toBeChecked(); + + // Télécharger le document UCR + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Générer le document pour UCR').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('DocumentPourUCR.html'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + }); + + test.describe('e) Fiche OGC', () => { + test.beforeEach(async ({ page }) => { + await page.locator('div.l1.r1').nth(1).click(); + await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + await expect.soft(page.locator('a[is_id="0/MD"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/CC"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/UCR"]').first()).toBeVisible(); + await expect.soft(page.locator('a[is_id="0/ATIH"]').first()).toBeVisible(); + }); + + test('i) UCR', async ({ page }) => { + // Recopie l'ensemble du codage du DIM + await expect.soft(page.getByRole('cell', { name: '07C141', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2351', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2 575 €' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-802 €' }).nth(3)).toBeVisible(); + await page.getByTitle('Recopie l\'ensemble du codage DIM(tout rum)').first().click(); + await expect.soft(page.locator('td[is_id="1/UCR"] i.fa.fa-check')).toBeVisible(); + await expect.soft(page.locator('td[is_id="2/UCR"] i.fa.fa-check')).toBeVisible(); + await expect.soft(page.locator('td[is_id="3/UCR"] i.fa.fa-check')).toBeVisible(); + await expect.soft(page.locator('td[is_id="4/UCR"] i.fa.fa-check')).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '0 €' }).nth(5)).toBeVisible(); + + // Recopie l'ensemble du codage de la concertation + await page.getByTitle('recopie l\'ensemble du codage de la CONCERTATION(tout rum)').first().click(); + await expect.soft(page.getByRole('cell', { name: '07C141', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2351', exact: true }).nth(1)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2 575 €' }).nth(3)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-802 €' }).nth(3)).toBeVisible(); + }); + + test('ii) ATIH', async ({ page }) => { + // Recopie l'ensemble du codage du DIM + //await expect.soft(page.locator('td[is_id="1/ATIH"] i.fa.fa-check')).toBeVisible(); + //await expect.soft(page.locator('td[is_id="2/ATIH"] i.fa.fa-check')).toBeVisible(); + //await expect.soft(page.locator('td[is_id="3/ATIH"] i.fa.fa-check')).toBeVisible(); + //await expect.soft(page.locator('td[is_id="4/ATIH"] i.fa.fa-check')).toBeVisible(); + //await page.getByTitle('recopie l\'ensemble du codage DIM(tout rum)').nth(1).click(); + //await expect.soft(page.getByRole('cell', { name: '0 €' }).nth(5)).toBeVisible(); + // Recopie l'ensemble du codage de la concertation + await page.getByTitle('recopie l\'ensemble du codage de la CONCERTATION(tout rum)').nth(1).click(); + await expect.soft(page.getByRole('cell', { name: '07C141', exact: true }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2351', exact: true }).nth(2)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '2 575 €' }).nth(4)).toBeVisible(); + await expect.soft(page.getByRole('cell', { name: '-802 €' }).nth(4)).toBeVisible(); + + }); + + }); + + test('ii) Justificatifs', async ({ page }) => { + // Tour désélectionner + await page.getByText('Désélectionner tout').click(); + await page.waitForTimeout(1000); + await page.getByText('Voir ou ajouterJustifs').click(); // Trier + await page.locator('div.l2.r2 a').first().click(); + await expect.soft(page.getByRole('heading', { name: 'Documents & Justificatifs OGC' })).toBeVisible(); + + await page.locator('i.fa.fa-folder').first().click(); + await expect.soft(page.locator('ul.active li')).toBeVisible(); + await page.locator('ul.active li').click(); + // Version originale + await expect.soft(page.getByRole('heading', { name: '.pdf' })).toBeVisible(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toHaveText('Version originale'); + + // Télecharger le justificatif original + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('.pdf'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Version modifiée + await page.getByText('Version modifiée').click(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toContainText('Version modifiée'); + + //Défiler entre les pages + await page.getByRole('cell', { name: 'Page 1' }).locator('a').click(); + await page.waitForTimeout(1000); // attendre le chargement + if (await page.getByRole('cell', { name: 'Page 2' }).first().isVisible()) { + await page.getByRole('cell', { name: 'Page 2' }).first().click(); + } + await expect.soft(page.getByRole('cell', { name: 'Page 2' })).toBeVisible(); + // Retour à la page 1 avec la flèche gauche + await page.getByTitle('Page précédente').click(); + await expect.soft(page.getByRole('cell', { name: 'Page 1' })).toBeVisible(); + + + // Télecharger le justificatif modifié + const downloadPromiseModif = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const downloadModif = await downloadPromiseModif; + const suggestedNameModif = downloadModif.suggestedFilename(); + expect.soft(suggestedNameModif).toContain('modif.pdf'); + // Enregistrer le fichier + await downloadModif.saveAs('downloads/' + suggestedNameModif); + + }); + + test('iii) Argumentaires', async ({ page }) => { + await page.locator('div.l3.r3 a').first().click(); + await expect(page.getByText('ARGUMENTAIRES OGC')).toBeVisible(); + // Télécharger les argumentaires + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter les argumentaires').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('ExportArgu.html'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Memo + await page.getByText('Mémo').click(); + await expect.soft(page.getByRole('heading', { name: 'Mémo', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').click(); + + // Recherche de saisines + await page.getByText('Recherche de saisines').click(); + await expect.soft(page.getByRole('textbox', { name: 'Rechercher un code ou un terme' })).toBeVisible(); + await expect.soft(page.getByText('Saisines : 0')).toBeVisible(); + await expect.soft(page.getByText('Agora : 0')).toBeVisible(); + await page.getByRole('textbox', { name: 'Rechercher un code ou un terme' }).fill('transfusion'); + await page.getByTitle('Rechercher', { exact: true }).click(); + await expect.soft(page.getByText('Saisines : 6')).toBeVisible(); + await expect.soft(page.getByText('Agora : ')).toBeVisible(); + await expect.soft(page.getByText('Transfusion sanguine en DAS')).toBeVisible(); + await page.getByText('Transfusion sanguine en DAS').click(); + await expect.soft(page.getByText('transfusion sanguine en DAS').nth(1)).toBeVisible(); + await expect.soft(page.getByText('Un dossier concerne un')).toBeVisible(); + + // Agora + await page.getByText('Agora : ').click(); + await expect.soft(page.getByText(' sujets trouvés sur Agora')).toBeVisible(); + await expect.soft(page.locator('td[is_id="34/titre"]')).toBeVisible(); + await page.getByText('Patient avec anémie traitée par transfusion : choix du DP (8 occurences)').click(); + await expect.soft(page.getByText('Patient avec anémie traitée par transfusion : choix du DP', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Source : Agora, sujet N°')).toBeVisible(); + await page.getByRole('link', { name: '53310' }).click(); + const [newPage] = await Promise.all([ + page.waitForEvent('popup'), + page.getByRole('link', { name: '53310' }).click() + ]); + + await newPage.waitForLoadState(); + + await expect(newPage).toHaveURL(/connect-pasrel\.atih\.sante\.fr\/cas\/login/); + + // Recherche de Diags ou Actes + await page.getByText('Recherche de Diags ou Actes').click(); + await expect.soft(page.getByText('Recherche de code')).toBeVisible(); + await expect.soft(page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' })).toBeVisible(); + await page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' }).fill('K8'); + await expect.soft(page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' })).toBeVisible(); + await page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' }).click(); + await page.waitForTimeout(1000); // attendre le chargement des résultats + + // changement d'onglet + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour UCR Argumentaire'); + await page.getByText('Résumé cas clinique').click(); + + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + await page.getByText('DIM Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('DIM Argumentaire'); + await page.getByText('Contrôleur Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Contrôleur Argumentaire'); + await page.getByText('Retour UCR Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour UCR Argumentaire'); + await page.getByText('Retour ATIH Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour ATIH Argumentaire'); + + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByText('ARGUMENTAIRES OGC')).not.toBeVisible(); + + }); + + }); + + + test.describe('b) Pointer les retours UCR', () => { + + async function allerPointerLesRetoursUCR(page : Page) { + await page.getByText('UCR', { exact: true }).click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('UCR'); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Préparer l\'Envoi UCR'); + await page.getByText('Pointer les retours UCR').click(); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Pointer les retours UCR'); + + } + + async function allerVueDensemble(page : Page) { + await page.getByText('Vue d\'ensemble').click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('Vue d\'ensemble'); + await page.getByText('Synthèse des indus').waitFor({ state: 'visible'}); + } + + test.beforeEach(async ({ page }) => { + await allerPointerLesRetoursUCR(page); + }); + + test('i) Ouvrir la fiche OGC', async ({ page }) => { + await page.locator('i.fa.fa-pencil').first().click(); + await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + + // Argumentaire + // DIM + await page.locator('a[is_id="0/MD"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/DIM\s*ARGUMENTAIRE/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // UCR + await page.locator('a[is_id="0/UCR"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour UCR/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // ATIH + await page.locator('a[is_id="0/ATIH"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour ATIH/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + }); + + test('ii) Cohérence des données UCR', async ({ page }) => { + + // 14 UCR = Codage Etablissement + const ligneOGC14Pointer = page.locator('font', { hasText: /^14$/ }).locator('..').locator('..').locator('..'); + const ligneOGC14VEnsemble = page.locator('span', { hasText: /^14$/ }).locator('..').locator('..'); + await ligneOGC14Pointer.locator('div.l1.r1 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC14VEnsemble.locator('span[title^="Indique si l\'UCR à valider la demande de l\'établissement"] i')).toBeVisible(); + await expect.soft(ligneOGC14VEnsemble.locator('span[title^="Indique si l\'UCR a validé le choix du contrôleur"] i')).not.toBeVisible(); + + // 14 UCR = codage concertation + await allerPointerLesRetoursUCR(page); + await ligneOGC14Pointer.locator('div.l2.r2 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC14VEnsemble.locator('span[title^="Indique si l\'UCR à valider la demande de l\'établissement"] i')).not.toBeVisible(); + await expect.soft(ligneOGC14VEnsemble.locator('span[title^="Indique si l\'UCR a validé le choix du contrôleur"] i')).toBeVisible(); + + + // 16 UCR = Codage concertation + const ligneOGC16Pointer = page.locator('font', { hasText: /^17$/ }).locator('..').locator('..').locator('..'); + const ligneOGC16VEnsemble = page.locator('span', { hasText: /^17$/ }).locator('..').locator('..'); + await allerPointerLesRetoursUCR(page); + await ligneOGC16Pointer.locator('div.l2.r2 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC16VEnsemble.locator('span[title^="Indique si l\'UCR à valider la demande de l\'établissement"] i')).not.toBeVisible(); + await expect.soft(ligneOGC16VEnsemble.locator('span[title^="Indique si l\'UCR a validé le choix du contrôleur"] i')).toBeVisible(); + + + // 16 UCR = codage Etablissement + await allerPointerLesRetoursUCR(page); + await ligneOGC16Pointer.locator('div.l1.r1 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC16VEnsemble.locator('span[title^="Indique si l\'UCR à valider la demande de l\'établissement"] i')).toBeVisible(); + await expect.soft(ligneOGC16VEnsemble.locator('span[title^="Indique si l\'UCR a validé le choix du contrôleur"] i')).not.toBeVisible(); + }); + + test('iii) Précocher UCR = Concertation', async ({ page }) => { + await page.getByRole('checkbox', { name: 'Précochez OUI Contrôleur' }).click(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(0)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(1)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(2)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(3)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(4)).toBeChecked(); + + }); + + }); + + }); + + test.describe('2- ATIH', () => { + test.beforeEach(async ({ page }, testInfo) => { + await page.getByText('ATIH', { exact: true }).click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('ATIH'); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Préparer l\'Envoi ATIH'); + + }); + + test.describe('a) Préparer l\'Envoi ATIH', () => { + test('i) Filtre', async ({ page }) => { + // Tour désélectionner + await page.getByText('Désélectionner tout').click(); + await expect.soft(page.locator('div.l0.r0 input').first()).not.toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(1)).not.toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(2)).not.toBeChecked(); + + // Cocher les désaccords + await page.getByText('Cocher les dossiers en dé').click(); + await expect.soft(page.locator('div.l0.r0 input').first()).toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(1)).toBeChecked(); + await expect.soft(page.locator('div.l0.r0 input').nth(2)).toBeChecked(); + + await page.locator('div.l4.r4 span[title="Dossier en désaccord"]').first().waitFor({ state: 'visible' }); + await expect.soft(page.locator('div.l4.r4').nth(1).locator('span').first()).toHaveAttribute('title', 'Dossier en désaccord'); + await expect.soft(page.locator('div.l4.r4').nth(2).locator('span').first()).toHaveAttribute('title', 'Dossier en désaccord'); + await expect.soft(page.locator('div.l4.r4').nth(3).locator('span').first()).toHaveAttribute('title', 'Dossier en désaccord'); + + // Télécharger le document UCR + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Générer le document pour ATIH').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('DocumentPourATIH.html'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + + }); + + test('ii) Ouvrir la fiche OGC', async ({ page }) => { + await page.locator('div.l1.r1').nth(1).click(); + await page.getByText('Fiche OGC').nth(1).waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + // Argumentaire + // DIM + await page.locator('a[is_id="0/MD"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/DIM\s*ARGUMENTAIRE/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // Concertation + await page.locator('a[is_id="0/CC"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // UCR + await page.locator('a[is_id="0/UCR"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour UCR/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // ATIH + await page.locator('a[is_id="0/ATIH"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour ATIH/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + }); + + test('iii) Justificatifs', async ({ page }) => { + // Tour désélectionner + await page.getByText('Désélectionner tout').click(); + await page.waitForTimeout(1000); + await page.getByText('Voir ou ajouterJustifs').click(); // Trier + await page.locator('div.l2.r2 a').first().click(); + await expect.soft(page.getByRole('heading', { name: 'Documents & Justificatifs OGC' })).toBeVisible(); + + await page.locator('i.fa.fa-folder').first().click(); + await expect.soft(page.locator('ul.active li')).toBeVisible(); + await page.locator('ul.active li').click(); + // Version originale + await expect(page.getByRole('heading', { name: '.pdf' })).toBeVisible(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toHaveText('Version originale'); + + // Télecharger le justificatif original + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('.pdf'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Version modifiée + await page.getByText('Version modifiée').click(); + await expect.soft(page.locator('nav ul.IS_hmenu li a.active')).toContainText('Version modifiée'); + + //Défiler entre les pages + await page.getByRole('cell', { name: 'Page 1' }).locator('a').click(); + await page.waitForTimeout(1000); // attendre le chargement + if (await page.getByRole('cell', { name: 'Page 2' }).first().isVisible()) { + await page.getByRole('cell', { name: 'Page 2' }).first().click(); + } + await expect.soft(page.getByRole('cell', { name: 'Page 2' })).toBeVisible(); + // Retour à la page 1 avec la flèche gauche + await page.getByTitle('Page précédente').click(); + await expect.soft(page.getByRole('cell', { name: 'Page 1' })).toBeVisible(); + + + // Télecharger le justificatif modifié + const downloadPromiseModif = page.waitForEvent('download'); + await page.getByTitle('Télécharger la version').click(); + const downloadModif = await downloadPromiseModif; + const suggestedNameModif = downloadModif.suggestedFilename(); + expect.soft(suggestedNameModif).toContain('modif.pdf'); + // Enregistrer le fichier + await downloadModif.saveAs('downloads/' + suggestedNameModif); + + }); + + test('iv) Argumentaires', async ({ page }) => { + await page.locator('div.l3.r3 a').first().click(); + await expect(page.getByText('ARGUMENTAIRES OGC')).toBeVisible(); + // Télécharger les argumentaires + const downloadPromise = page.waitForEvent('download'); + await page.getByText('Exporter les argumentaires').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('ExportArgu.html'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + + // Memo + await page.getByText('Mémo').click(); + await expect.soft(page.getByRole('heading', { name: 'Mémo', exact: true })).toBeVisible(); + await page.locator('a.IS_icon.IS_FrameCloseButton').click(); + + // Recherche de saisines + await page.getByText('Recherche de saisines').click(); + await expect.soft(page.getByRole('textbox', { name: 'Rechercher un code ou un terme' })).toBeVisible(); + await expect.soft(page.getByText('Saisines : 0')).toBeVisible(); + await expect.soft(page.getByText('Agora : 0')).toBeVisible(); + await page.getByRole('textbox', { name: 'Rechercher un code ou un terme' }).fill('transfusion'); + await page.getByTitle('Rechercher', { exact: true }).click(); + await expect.soft(page.getByText('Saisines : 6')).toBeVisible(); + await expect.soft(page.getByText('Agora : ')).toBeVisible(); + await expect.soft(page.getByText('Transfusion sanguine en DAS')).toBeVisible(); + await page.getByText('Transfusion sanguine en DAS').click(); + await expect.soft(page.getByText('transfusion sanguine en DAS').nth(1)).toBeVisible(); + await expect.soft(page.getByText('Un dossier concerne un')).toBeVisible(); + + // Agora + await page.getByText('Agora : ').click(); + await expect.soft(page.getByText(' sujets trouvés sur Agora')).toBeVisible(); + await expect.soft(page.locator('td[is_id="34/titre"]')).toBeVisible(); + await page.getByText('Patient avec anémie traitée par transfusion : choix du DP (8 occurences)').click(); + await expect.soft(page.getByText('Patient avec anémie traitée par transfusion : choix du DP', { exact: true })).toBeVisible(); + await expect.soft(page.getByText('Source : Agora, sujet N°')).toBeVisible(); + await page.getByRole('link', { name: '53310' }).click(); + const [newPage] = await Promise.all([ + page.waitForEvent('popup'), + page.getByRole('link', { name: '53310' }).click() + ]); + + await newPage.waitForLoadState(); + + await expect(newPage).toHaveURL(/connect-pasrel\.atih\.sante\.fr\/cas\/login/); + + // Recherche de Diags ou Actes + await page.getByText('Recherche de Diags ou Actes').click(); + await expect.soft(page.getByText('Recherche de code')).toBeVisible(); + await expect.soft(page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' })).toBeVisible(); + await page.getByRole('combobox', { name: 'Saisir un code ou un mot clé' }).fill('K8'); + await expect.soft(page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' })).toBeVisible(); + await page.getByRole('option', { name: 'K803 - CALCUL DES CANAUX BIL. AVEC ANGIOCHOLITE' }).click(); + await page.waitForTimeout(1000); // attendre le chargement des résultats + + // changement d'onglet + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour ATIH Argumentaire'); + await page.getByText('Résumé cas clinique').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + await page.getByText('DIM Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('DIM Argumentaire'); + await page.getByText('Contrôleur Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Contrôleur Argumentaire'); + await page.getByText('Retour UCR Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour UCR Argumentaire'); + await page.getByText('Retour ATIH Argumentaire').click(); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Retour ATIH Argumentaire'); + + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect(page.getByText('ARGUMENTAIRES OGC')).not.toBeVisible(); + + }); + + }); + + test.describe('b) Pointer les retours ATIH', () => { + + async function allerPointerLesRetoursATIH(page : Page) { + await page.getByText('ATIH', { exact: true }).click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('ATIH'); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Préparer l\'Envoi ATIH'); + await page.getByText('Pointer les retours ATIH').click(); + await expect.soft(page.locator('a.IS_Tab_WithCloseButton.active').last()).toHaveText('Pointer les retours ATIH'); + + } + + async function allerVueDensemble(page : Page) { + await page.getByText('Vue d\'ensemble').click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('Vue d\'ensemble'); + await page.getByText('Synthèse des indus').waitFor({ state: 'visible'}); + } + + test.beforeEach(async ({ page }) => { + await allerPointerLesRetoursATIH(page); + }); + + test('i) Ouvrir la fiche OGC', async ({ page }) => { + await page.locator('i.fa.fa-pencil').first().click(); + await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + await expect.soft(page.getByText('Label inaccessible')).not.toBeVisible(); // vérifier que les labels d'accessibilité ne sont pas présents sur les icônes ATIH + await expect.soft(page.getByText('Aucun DP / DR ou IGC pour ce RUM')).not.toBeVisible(); // vérifier que les données du séjour sont présentes et que ce n'est pas une fiche générique pour les séjours sans DP/DR ou IGC + + // Argumentaire + // DIM + await page.locator('a[is_id="0/MD"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/DIM\s*ARGUMENTAIRE/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // Concertation + await page.locator('a[is_id="0/CC"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText('Résumé cas clinique'); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // UCR + await page.locator('a[is_id="0/UCR"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour UCR/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + + // ATIH + await page.locator('a[is_id="0/ATIH"] i.fa.fa-Commenting').click(); + await page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' }).waitFor({ state: 'visible' }); + await expect.soft(page.locator('ul.IS_hmenu li a.active')).toHaveText(/Retour ATIH/i); + // Quitter + //await page.getByText('Quitter La page Argumentaires').click(); + await page.locator('a.IS_icon.IS_FrameCloseButton').last().click(); + await expect.soft(page.getByRole('heading', { name: 'Saisie et visualisation des argumentaires' })).not.toBeVisible(); + }); + + test('ii) Cohérence des données ATIH', async ({ page }) => { + + // 14 ATIH = OUI ETAB + const ligneOGC14Pointer = page.locator('font', { hasText: /^14$/ }).locator('..').locator('..').locator('..'); + const ligneOGC14VEnsemble = page.locator('span', { hasText: /^14$/ }).locator('..').locator('..'); + await ligneOGC14Pointer.locator('div.l1.r1 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC14VEnsemble.locator('div.l8.r8 span i')).toBeVisible(); + await expect.soft(ligneOGC14VEnsemble.locator('div.l9.r9 span i')).not.toBeVisible(); + + // 14 ATIH = OUI CC + await allerPointerLesRetoursATIH(page); + await ligneOGC14Pointer.locator('div.l2.r2 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC14VEnsemble.locator('div.l8.r8 span i')).not.toBeVisible(); + await expect.soft(ligneOGC14VEnsemble.locator('div.l9.r9 span i')).toBeVisible(); + + + // 16 ATIH = OUI CC + const ligneOGC16Pointer = page.locator('font', { hasText: /^17$/ }).locator('..').locator('..').locator('..'); + const ligneOGC16VEnsemble = page.locator('span', { hasText: /^17$/ }).locator('..').locator('..'); + await allerPointerLesRetoursATIH(page); + await ligneOGC16Pointer.locator('div.l2.r2 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC16VEnsemble.locator('div.l8.r8 span i')).not.toBeVisible(); + await expect.soft(ligneOGC16VEnsemble.locator('div.l9.r9 span i')).toBeVisible(); + + + // 16 ATIH = codage Etablissement + await allerPointerLesRetoursATIH(page); + await ligneOGC16Pointer.locator('div.l1.r1 input').click(); + await page.waitForTimeout(5000); // attendre le traitement + await allerVueDensemble(page); + await expect.soft(ligneOGC16VEnsemble.locator('div.l8.r8 span i')).toBeVisible(); + await expect.soft(ligneOGC16VEnsemble.locator('div.l9.r9 span i')).not.toBeVisible(); + }); + + test('iii) Précocher ATIH = Concertation', async ({ page }) => { + await page.getByText('Précocher ATIH = Concertation').click(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(0)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(1)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(2)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(3)).toBeChecked(); + await expect.soft(page.locator('font').locator('..').locator('..').locator('..').locator('div.l2.r2 input').nth(4)).toBeChecked(); + + }); + }); + }); + + test.describe('3- Caisses', () => { + test.beforeEach(async ({ page }, testInfo) => { + await page.locator('a').filter({ hasText: 'Caisses' }).click(); + await expect.soft(page.locator('a.active').nth(1)).toHaveText('Caisses'); + await page.getByText('Synthèse des indus').waitFor({ state: 'visible'}); + //await expect.soft(page.getByText('Montant dû à la CPAM')).toBeVisible(); + await expect.soft(page.getByText('Montant à récupérer de la CPAM')).toBeVisible(); + await expect.soft(page.getByText('Montant Contesté')).toBeVisible(); + }); + + // test('a) Ouvrir la fiche OGC', async ({ page }) => { + // await page.locator('div.l0.r0').nth(1).click(); + // await page.getByText('Fiche OGC').waitFor({ state: 'visible' }); + //}); + test('b) Export', async({page}) => { + await page.locator('a[title="Exporter sous excel les données du tableau"] i').click(); + await page.waitForTimeout(2000); // attendre le téléchargement du fichier + const downloadPromise = page.waitForEvent('download'); + await page.getByTitle('Exporter sous excel les données du tableau').click(); + const download = await downloadPromise; + const suggestedName = download.suggestedFilename(); + expect.soft(suggestedName).toContain('Notifications'); + expect.soft(suggestedName).toContain('.xlsx'); + // Enregistrer le fichier + await download.saveAs('downloads/' + suggestedName); + }); + + test('c) Cohérence des montants', async({page}) => { + const montantRecupcheck = page.locator('font', { hasText: /^8$/ }).locator('..').locator('..').locator('..').locator('div.l5.r5 label input'); + const montantContestecheck = page.locator('font', { hasText: /^8$/ }).locator('..').locator('..').locator('..').locator('div.l6.r6 label input'); + const montantDuValeur = page.locator('font', { hasText: /^8$/ }).locator('..').locator('..').locator('..').locator('div.l8.r8 span font'); + const montantContesteValeur = page.locator('font', { hasText: /^8$/ }).locator('..').locator('..').locator('..').locator('div.l7.r7 span font'); + + // Cocher montant à récupérer + await montantRecupcheck.click(); + await page.waitForTimeout(5000); // attendre le traitement + await expect.soft(montantDuValeur).toBeVisible(); + await expect.soft(montantContesteValeur).not.toBeVisible(); + + // Cocher montant contesté + await montantContestecheck.click(); + await page.waitForTimeout(5000); // attendre le traitement + await expect.soft(montantContesteValeur).toBeVisible(); + await expect.soft(montantDuValeur).not.toBeVisible(); + + // Décocher les deux + await montantContestecheck.click(); + await page.waitForTimeout(5000); // attendre le traitement + await expect.soft(montantDuValeur).not.toBeVisible(); + await expect.soft(montantContesteValeur).not.toBeVisible(); + + }); + + + }); + + + + });*/ + +}); + \ No newline at end of file