From 437b308251b6a710c270765045d5f0f0e47ee793 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 18:33:31 +0100 Subject: [PATCH 1/2] Tests e2e playwright : Lint tests --- .../playwright/attribute-table.spec.js | 3 ++- tests/end2end/playwright/globals.js | 23 ++++++++++++++----- .../playwright/requests-metadata.spec.js | 9 ++++++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/tests/end2end/playwright/attribute-table.spec.js b/tests/end2end/playwright/attribute-table.spec.js index d40ebc260a..cfa2ab44bf 100644 --- a/tests/end2end/playwright/attribute-table.spec.js +++ b/tests/end2end/playwright/attribute-table.spec.js @@ -17,8 +17,9 @@ test.describe('Attribute table', () => { await expect(project.attributeTableHtml(layerName).locator('tbody tr')).toHaveCount(7); // mediaFile as stored in data-src attributes const mediaFile = await project.attributeTableHtml(layerName).locator('img.data-attr-thumbnail').first().getAttribute('data-src'); + expect(mediaFile).not.toBeNull // ensure src contain "dynamic" mediaFile - await expect(project.attributeTableHtml(layerName).locator('img.data-attr-thumbnail').first()).toHaveAttribute('src', new RegExp(mediaFile)); + await expect(project.attributeTableHtml(layerName).locator('img.data-attr-thumbnail').first()).toHaveAttribute('src', new RegExp(mediaFile ?? '')); // ensure src contain getMedia and projet URL await expect(project.attributeTableHtml(layerName).locator('img.data-attr-thumbnail').first()).toHaveAttribute('src', /getMedia\?repository=testsrepository&project=attribute_table&/); }) diff --git a/tests/end2end/playwright/globals.js b/tests/end2end/playwright/globals.js index 069128f2be..ff550fdb69 100644 --- a/tests/end2end/playwright/globals.js +++ b/tests/end2end/playwright/globals.js @@ -1,7 +1,21 @@ // @ts-check const { expect } = require('@playwright/test'); -import { Page } from '@playwright/test'; +/** + * Playwright Page + * @typedef {import('@playwright/test').Page} Page + */ + +/** + * Integer + * @typedef {number} int + */ + +/** + * Expect no errors in the map page + * @param {Page} page The page object + * @param {boolean} checkLayerTreeView Checking that tree view contains layers + */ async function NoErrors(page, checkLayerTreeView = true) { // No error await expect(page.locator('p.error-msg')).toHaveCount(0); @@ -13,10 +27,9 @@ async function NoErrors(page, checkLayerTreeView = true) { } /** - * CatchErrors function - * Some checks when the map is on error + * Expect errors in the map page * @param {Page} page The page object - * @param {int} layersInTreeView The number of layers to find in the treeview. + * @param {int} layersInTreeView The number of layers to find in the tree view. */ async function CatchErrors(page, layersInTreeView = 0) { // Error @@ -29,7 +42,6 @@ async function CatchErrors(page, layersInTreeView = 0) { } /** - * gotoMap function * Helper to load a map and do some basic checks * @param {string} url The URL of the map to load * @param {Page} page The page object @@ -67,7 +79,6 @@ export async function gotoMap(url, page, mapMustLoad = true, layersInTreeView = } /** - * reloadMap function * Helper to reload a map and do some basic checks * @param {Page} page The page object * @param {boolean} check If some basic checks must be done. diff --git a/tests/end2end/playwright/requests-metadata.spec.js b/tests/end2end/playwright/requests-metadata.spec.js index 401b93e7c1..beb3d5ad3b 100644 --- a/tests/end2end/playwright/requests-metadata.spec.js +++ b/tests/end2end/playwright/requests-metadata.spec.js @@ -1,13 +1,18 @@ // @ts-check import { test, expect } from '@playwright/test'; +/** + * Playwright Page + * @typedef {import('@playwright/test').APIResponse} APIResponse + */ + const url = 'index.php/view/app/metadata'; /** * Check for a JSON response about the metadata - * @param {Response} response The response object + * @param {APIResponse} response The response object * - * @return {JSON} The JSON response + * @return {Promise} The JSON response */ export async function checkJson(response) { expect(response.ok()).toBeTruthy(); From aaba2d45322f899a1fb0419013a358d7d5226efc Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 18:34:33 +0100 Subject: [PATCH 2/2] Tests e2e playwright : Lint POM --- tests/end2end/playwright/pages/admin.js | 12 +++++++++++- tests/end2end/playwright/pages/base.js | 12 +++++++++++- tests/end2end/playwright/pages/project.js | 12 +++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/tests/end2end/playwright/pages/admin.js b/tests/end2end/playwright/pages/admin.js index ee66f25e44..ad2ec9e7a2 100644 --- a/tests/end2end/playwright/pages/admin.js +++ b/tests/end2end/playwright/pages/admin.js @@ -1,8 +1,18 @@ // @ts-check -import {expect, Locator, Page} from '@playwright/test'; +import { expect } from '@playwright/test'; import { BasePage } from './base'; +/** + * Playwright Page + * @typedef {import('@playwright/test').Page} Page + */ + +/** + * Playwright Page + * @typedef {import('@playwright/test').Locator} Locator + */ + export class AdminPage extends BasePage { /** * Main administrator menu diff --git a/tests/end2end/playwright/pages/base.js b/tests/end2end/playwright/pages/base.js index 1ecdf7dbb8..3a5760af40 100644 --- a/tests/end2end/playwright/pages/base.js +++ b/tests/end2end/playwright/pages/base.js @@ -1,6 +1,16 @@ // @ts-check -import {expect, Locator, Page} from '@playwright/test'; +import { expect } from '@playwright/test'; + +/** + * Playwright Page + * @typedef {import('@playwright/test').Page} Page + */ + +/** + * Playwright Page + * @typedef {import('@playwright/test').Locator} Locator + */ export class BasePage { /** @type {Page} */ diff --git a/tests/end2end/playwright/pages/project.js b/tests/end2end/playwright/pages/project.js index 26c81dbddc..3868e77dbc 100644 --- a/tests/end2end/playwright/pages/project.js +++ b/tests/end2end/playwright/pages/project.js @@ -1,8 +1,18 @@ // @ts-check -import {expect, Locator, Page} from '@playwright/test'; +import { expect } from '@playwright/test'; import { gotoMap } from '../globals'; import { BasePage } from './base'; +/** + * Playwright Page + * @typedef {import('@playwright/test').Page} Page + */ + +/** + * Playwright Page + * @typedef {import('@playwright/test').Locator} Locator + */ + export class ProjectPage extends BasePage { // Metadata /**