From 50cf8d47aa840c90acd10c9518f1d680b13c383f Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Wed, 10 Jul 2024 17:53:34 +0200 Subject: [PATCH 01/11] Add UI tests to upgrade from 171 to 1.7.8.11 --- .github/workflows/ui-test/sanity.json | 27 +++++++++++++++++++++++++++ tests/UI/docker-compose.yml | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index b4adbe67c..0a5140c31 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -1,6 +1,33 @@ { "include": [ { + "comment": "1.7.1 ~ minor PHP 7.1" + }, + { + "PS_VERSION_START": "1.7.0.0", + "PS_VERSION_END": "1.7.8.11", + "UPGRADE_CHANNEL": "minor", + "PHP_VERSION": "7.1", + "IMG_DOCKER": "1.7.0.0" + }, + { + "PS_VERSION_START": "1.7.0.1", + "PS_VERSION_END": "1.7.8.11", + "UPGRADE_CHANNEL": "minor", + "PHP_VERSION": "7.1", + "IMG_DOCKER": "1.7.0.1" + }, + { + "PS_VERSION_START": "1.7.0.2", + "PS_VERSION_END": "1.7.8.11", + "UPGRADE_CHANNEL": "minor", + "PHP_VERSION": "7.1", + "IMG_DOCKER": "1.7.0.2" + }, + { + "comment": "1.7.8 ~ minor PHP 7.2 ~ 7.4" + "comment": "1.7.8 ~ minor PHP 7.4" + "comment": "1.7.8.10 -> 1.7.8.11 PHP 7.1" "comment": "1.7.6.0 -> 1.7.8.11 PHP 7.1 online" }, { diff --git a/tests/UI/docker-compose.yml b/tests/UI/docker-compose.yml index f86e9a96c..0d73d8cfd 100644 --- a/tests/UI/docker-compose.yml +++ b/tests/UI/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: prestashop: - image: prestashop/prestashop:${PS_VERSION}-apache + image: prestashop/prestashop:${PS_VERSION} container_name: prestashop depends_on: - mysql From 018bc5dcf209f9db7a395108eaf8a4ffe2ac5a77 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Wed, 10 Jul 2024 18:36:06 +0200 Subject: [PATCH 02/11] Add some fixes --- .github/workflows/ui-test/sanity.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index 0a5140c31..5f3da3995 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -4,21 +4,21 @@ "comment": "1.7.1 ~ minor PHP 7.1" }, { - "PS_VERSION_START": "1.7.0.0", + "PS_VERSION_START": "1.7.1.0", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", "IMG_DOCKER": "1.7.0.0" }, { - "PS_VERSION_START": "1.7.0.1", + "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", "IMG_DOCKER": "1.7.0.1" }, { - "PS_VERSION_START": "1.7.0.2", + "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", From 679d128eb9e2d0170f5bf2330155e3500b4d2dec Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Wed, 10 Jul 2024 19:15:24 +0200 Subject: [PATCH 03/11] Fix docker img --- .github/workflows/ui-test/sanity.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index 5f3da3995..6283e749e 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -8,21 +8,21 @@ "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.0.0" + "IMG_DOCKER": "1.7.1.0" }, { "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.0.1" + "IMG_DOCKER": "1.7.1.1" }, { "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.0.2" + "IMG_DOCKER": "1.7.1.2" }, { "comment": "1.7.8 ~ minor PHP 7.2 ~ 7.4" From 304848c482696590ae20eaea26ff57663698e207 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Tue, 16 Jul 2024 16:14:20 +0200 Subject: [PATCH 04/11] Rebase --- .github/workflows/ui-test/sanity.json | 4 ---- tests/UI/docker-compose.yml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index 6283e749e..8a89e5594 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -8,24 +8,20 @@ "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.1.0" }, { "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.1.1" }, { "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1", - "IMG_DOCKER": "1.7.1.2" }, { - "comment": "1.7.8 ~ minor PHP 7.2 ~ 7.4" "comment": "1.7.8 ~ minor PHP 7.4" "comment": "1.7.8.10 -> 1.7.8.11 PHP 7.1" "comment": "1.7.6.0 -> 1.7.8.11 PHP 7.1 online" diff --git a/tests/UI/docker-compose.yml b/tests/UI/docker-compose.yml index 0d73d8cfd..f86e9a96c 100644 --- a/tests/UI/docker-compose.yml +++ b/tests/UI/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: prestashop: - image: prestashop/prestashop:${PS_VERSION} + image: prestashop/prestashop:${PS_VERSION}-apache container_name: prestashop depends_on: - mysql From 51c3b4373a8c02974ef86c11e8ce9b47fe91c029 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Tue, 16 Jul 2024 16:22:38 +0200 Subject: [PATCH 05/11] Fix lint error --- .github/workflows/ui-test/sanity.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index 8a89e5594..f9514da7d 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -7,19 +7,19 @@ "PS_VERSION_START": "1.7.1.0", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", - "PHP_VERSION": "7.1", + "PHP_VERSION": "7.1" }, { "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", - "PHP_VERSION": "7.1", + "PHP_VERSION": "7.1" }, { "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", "UPGRADE_CHANNEL": "minor", - "PHP_VERSION": "7.1", + "PHP_VERSION": "7.1" }, { "comment": "1.7.8 ~ minor PHP 7.4" From fca51ac7a986147b6a40ebd35f48de83556eac55 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Wed, 17 Jul 2024 14:57:23 +0200 Subject: [PATCH 06/11] Use mysql 5.6 --- tests/UI/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/UI/docker-compose.yml b/tests/UI/docker-compose.yml index f86e9a96c..664855655 100644 --- a/tests/UI/docker-compose.yml +++ b/tests/UI/docker-compose.yml @@ -31,7 +31,7 @@ services: ports: - 80:80 mysql: - image: mysql:5.7 + image: mysql:5.6 container_name: prestashop-mysql healthcheck: test: From a7ec41e5ce583b2fd70080f22b3592523fdbad87 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Wed, 17 Jul 2024 15:06:15 +0200 Subject: [PATCH 07/11] Use mysql 5.7 --- tests/UI/docker-compose.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/UI/docker-compose.yml b/tests/UI/docker-compose.yml index 664855655..7a7604edb 100644 --- a/tests/UI/docker-compose.yml +++ b/tests/UI/docker-compose.yml @@ -1,5 +1,10 @@ version: '3.7' +volumes: + db-data: + vendor: + var: + services: prestashop: image: prestashop/prestashop:${PS_VERSION}-apache @@ -31,8 +36,10 @@ services: ports: - 80:80 mysql: - image: mysql:5.6 + image: mysql:5.7 container_name: prestashop-mysql + volumes: + - db-data:/var/lib/mysql healthcheck: test: [ From e8d93bdd6c2cf52a60d023c99193690af8cf85a2 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Thu, 24 Oct 2024 15:29:35 +0200 Subject: [PATCH 08/11] Add some fixes --- .github/workflows/ui-test/sanity.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index f9514da7d..cdad1251a 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -1,28 +1,24 @@ { "include": [ { - "comment": "1.7.1 ~ minor PHP 7.1" + "comment": "1.7.1.0 ~ 1.7.1.2 -> 1.7.8.11 PHP 7.1" }, { "PS_VERSION_START": "1.7.1.0", "PS_VERSION_END": "1.7.8.11", - "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1" }, { "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", - "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1" }, { "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", - "UPGRADE_CHANNEL": "minor", "PHP_VERSION": "7.1" }, { - "comment": "1.7.8 ~ minor PHP 7.4" "comment": "1.7.8.10 -> 1.7.8.11 PHP 7.1" "comment": "1.7.6.0 -> 1.7.8.11 PHP 7.1 online" }, From 408c9ac0e29409786448ebc3f686dbe5508dcaa9 Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Thu, 14 Nov 2024 16:39:15 +0100 Subject: [PATCH 09/11] Rebase --- .github/workflows/ui-test/sanity.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ui-test/sanity.json b/.github/workflows/ui-test/sanity.json index cdad1251a..ef0454132 100644 --- a/.github/workflows/ui-test/sanity.json +++ b/.github/workflows/ui-test/sanity.json @@ -6,20 +6,22 @@ { "PS_VERSION_START": "1.7.1.0", "PS_VERSION_END": "1.7.8.11", - "PHP_VERSION": "7.1" + "PHP_VERSION": "7.1", + "UPGRADE_CHANNEL": "online" }, { "PS_VERSION_START": "1.7.1.1", "PS_VERSION_END": "1.7.8.11", - "PHP_VERSION": "7.1" + "PHP_VERSION": "7.1", + "UPGRADE_CHANNEL": "online" }, { "PS_VERSION_START": "1.7.1.2", "PS_VERSION_END": "1.7.8.11", - "PHP_VERSION": "7.1" + "PHP_VERSION": "7.1", + "UPGRADE_CHANNEL": "online" }, { - "comment": "1.7.8.10 -> 1.7.8.11 PHP 7.1" "comment": "1.7.6.0 -> 1.7.8.11 PHP 7.1 online" }, { From 59c7aeb555115194690604cb2d9881b8430b18ff Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Thu, 14 Nov 2024 19:23:57 +0100 Subject: [PATCH 10/11] Adapt tests --- .../02_productsBO/01_filterProducts.spec.ts | 57 ++++++++---- .../02_CRUDStandardProduct.spec.ts | 2 +- .../03_CRUDProductWithCombinations.spec.ts | 8 +- .../04_CRUDVirtualProduct.spec.ts | 2 +- .../02_productsBO/05_deleteProduct.spec.ts | 2 +- .../06_deleteProductsWithBulkActions.spec.ts | 2 +- .../03_catalogFO/01_filterProducts.spec.ts | 31 +++++-- .../03_catalogFO/02_checkProduct.spec.ts | 20 +++-- .../sanity/04_cartFO/01_editCheckCart.spec.ts | 86 ++++++++++++++----- .../05_checkoutFO/01_orderProduct.spec.ts | 37 ++++++-- 10 files changed, 176 insertions(+), 71 deletions(-) diff --git a/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts index c180640e0..820a62f2a 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts @@ -121,28 +121,25 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, expect(isVisible, 'Reset button is visible!').toEqual(false); }); - if (semver.lt(psVersion, '8.1.0') || isProductPageV1) { - test('should get the number of products', async () => { - await utilsTest.addContextItem(test.info(), 'testIdentifier', 'getNumberOfProduct', baseContext); + test('should get the number of products', async () => { + await utilsTest.addContextItem(test.info(), 'testIdentifier', 'getNumberOfProduct', baseContext); + if (semver.lt(psVersion, '8.1.0') || isProductPageV1) { numberOfProducts = await boProductsPage.getNumberOfProductsFromList(page); - expect(numberOfProducts).toBeGreaterThan(0); - }); - } else { - test('should get number of products', async () => { - await utilsTest.addContextItem(test.info(), 'testIdentifier', 'getNumberOfProduct', baseContext); - + } else { numberOfProducts = await boProductsPage.getNumberOfProductsFromHeader(page); - expect(numberOfProducts).toBeGreaterThan(0); - }); - } + } + expect(numberOfProducts).toBeGreaterThan(0); + }); - [ + const data = [ { args: { identifier: 'filterIDMinMax', filterBy: 'id_product', filterValue: {min: 5, max: 10}, + // For PS version <= 1.7.2 + oldFilterValue: {min: 3, max: 7}, filterType: 'input', }, }, @@ -151,6 +148,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterName', filterBy: 'product_name', filterValue: dataProducts.demo_14.name, + // For PS version <= 1.7.2 + oldFilterValue: dataProducts.old_demo_4.name, filterType: 'input', }, }, @@ -159,6 +158,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterReference', filterBy: 'reference', filterValue: dataProducts.demo_14.reference, + // For PS version <= 1.7.2 + oldFilterValue: dataProducts.old_demo_7.reference, filterType: 'input', }, }, @@ -167,6 +168,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterCategory', filterBy: 'category', filterValue: dataCategories.art.name, + // For PS version <= 1.7.2 + oldFilterValue: dataProducts.old_demo_3.category, filterType: 'input', }, }, @@ -175,6 +178,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterPriceMinMax', filterBy: 'price', filterValue: {min: 5, max: 10}, + // For PS version <= 1.7.2 + oldFilterValue: {min: 20, max: 30}, filterType: 'input', }, }, @@ -183,6 +188,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterQuantityMinMax', filterBy: 'quantity', filterValue: {min: 1300, max: 1500}, + // For PS version <= 1.7.2 + oldFilterValue: {min: 900, max: 1500}, filterType: 'input', }, }, @@ -191,6 +198,8 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, identifier: 'filterStatus', filterBy: 'active', filterValue: 'Yes', + // For PS version <= 1.7.2 + oldFilterValue: 'Yes', filterType: 'select', }, }, @@ -198,10 +207,20 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, test(`should filter list by '${tst.args.filterBy}' and check result`, async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', `${tst.args.identifier}`, baseContext); + let filterValue: any = ''; + + if (numberOfProducts > 7) { + // For PS version > 1.7.2 + filterValue = tst.args.filterValue; + } else { + // For PS version <= 1.7.2 + filterValue = tst.args.oldFilterValue + } + if (semver.lt(psVersion, '8.1.0') && tst.args.filterBy === 'active') { await boProductsPage.filterProducts(page, tst.args.filterBy, 'Active', tst.args.filterType); } else { - await boProductsPage.filterProducts(page, tst.args.filterBy, tst.args.filterValue, tst.args.filterType); + await boProductsPage.filterProducts(page, tst.args.filterBy, filterValue, tst.args.filterType); } const numberOfProductsAfterFilter = await boProductsPage.getNumberOfProductsFromList(page); @@ -214,20 +233,20 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, for (let i = 1; i <= numberOfProductsAfterFilter; i++) { const textColumn = await boProductsPage.getTextColumn(page, tst.args.filterBy, i); - if (typeof tst.args.filterValue !== 'string') { - expect(textColumn).toBeGreaterThanOrEqual(tst.args.filterValue.min); - expect(textColumn).toBeLessThanOrEqual(tst.args.filterValue.max); + if (typeof filterValue !== 'string') { + expect(textColumn).toBeGreaterThanOrEqual(filterValue.min); + expect(textColumn).toBeLessThanOrEqual(filterValue.max); } else if (tst.args.filterBy === 'active') { expect(textColumn).toEqual(true); } else { - expect(textColumn).toContain(tst.args.filterValue); + expect(textColumn).toContain(filterValue); } } }); test(`should reset filter by '${tst.args.filterBy}'`, async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', `resetFilter${tst.args.identifier}`, baseContext); - + const numberOfProductsAfterReset = await boProductsPage.resetAndGetNumberOfLines(page); expect(numberOfProductsAfterReset).toEqual(numberOfProducts); }); diff --git a/tests/UI/campaigns/sanity/02_productsBO/02_CRUDStandardProduct.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/02_CRUDStandardProduct.spec.ts index 000384429..a4ab728f3 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/02_CRUDStandardProduct.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/02_CRUDStandardProduct.spec.ts @@ -90,7 +90,7 @@ test.describe('BO - Catalog - Products : CRUD standard product', async () => { }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/36097 - if (semver.lte(psVersion, '8.1.6')) { + if (semver.lte(psVersion, '8.1.6') && semver.gte(psVersion, '7.3.0')) { test('should close the menu', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'closeMenu', baseContext); diff --git a/tests/UI/campaigns/sanity/02_productsBO/03_CRUDProductWithCombinations.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/03_CRUDProductWithCombinations.spec.ts index 1bb29da49..0b7881828 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/03_CRUDProductWithCombinations.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/03_CRUDProductWithCombinations.spec.ts @@ -64,7 +64,7 @@ test.describe('BO - Catalog - Products : CRUD product with combinations', async }, { name: 'size', - values: ['L', 'XL'], + values: ['L'], }, ], }); @@ -103,7 +103,7 @@ test.describe('BO - Catalog - Products : CRUD product with combinations', async }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/36097 - if (semver.lte(psVersion, '8.1.6')) { + if (semver.lte(psVersion, '8.1.6') && semver.gte(psVersion, '7.3.0')) { test('should close the menu', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'closeMenu', baseContext); @@ -248,7 +248,7 @@ test.describe('BO - Catalog - Products : CRUD product with combinations', async ); if (semver.gte(psVersion, '8.1.0')) { - expect(textResult).toEqual('Generate 6 combinations'); + expect(textResult).toEqual('Generate 3 combinations'); } else { expect(textResult).toEqual(boProductsCreatePage.successfulUpdateMessage); } @@ -259,7 +259,7 @@ test.describe('BO - Catalog - Products : CRUD product with combinations', async await utilsTest.addContextItem(test.info(), 'testIdentifier', 'generateCombinations2', baseContext); const successMessage = await boProductsCreateTabCombinationsPage.generateCombinations(page); - expect(successMessage).toEqual('Successfully generated 6 combinations.'); + expect(successMessage).toEqual('Successfully generated 3 combinations.'); }); test('should check that combinations generation modal is closed', async () => { diff --git a/tests/UI/campaigns/sanity/02_productsBO/04_CRUDVirtualProduct.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/04_CRUDVirtualProduct.spec.ts index 3fd302998..66746745f 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/04_CRUDVirtualProduct.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/04_CRUDVirtualProduct.spec.ts @@ -83,7 +83,7 @@ test.describe('BO - Catalog - Products : CRUD virtual product', async () => { }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/36097 - if (semver.lte(psVersion, '8.1.6')) { + if (semver.lte(psVersion, '8.1.6') && semver.gte(psVersion, '7.3.0')) { test('should close the menu', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'closeMenu', baseContext); diff --git a/tests/UI/campaigns/sanity/02_productsBO/05_deleteProduct.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/05_deleteProduct.spec.ts index 585c85e44..8998cb39c 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/05_deleteProduct.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/05_deleteProduct.spec.ts @@ -71,7 +71,7 @@ test.describe('BO - Catalog - Products : Delete product', async () => { }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/36097 - if (semver.lte(psVersion, '8.1.6')) { + if (semver.lte(psVersion, '8.1.6') && semver.gte(psVersion, '7.3.0')) { test('should close the menu', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'closeMenu', baseContext); diff --git a/tests/UI/campaigns/sanity/02_productsBO/06_deleteProductsWithBulkActions.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/06_deleteProductsWithBulkActions.spec.ts index c8f81051e..c5885ea46 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/06_deleteProductsWithBulkActions.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/06_deleteProductsWithBulkActions.spec.ts @@ -81,7 +81,7 @@ test.describe('BO - Catalog - Products : Delete products with bulk actions', asy }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/36097 - if (semver.lte(psVersion, '8.1.6')) { + if (semver.lte(psVersion, '8.1.6') && semver.gte(psVersion, '7.3.0')) { test('should close the menu', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'closeMenu', baseContext); diff --git a/tests/UI/campaigns/sanity/03_catalogFO/01_filterProducts.spec.ts b/tests/UI/campaigns/sanity/03_catalogFO/01_filterProducts.spec.ts index 1083a292e..e08218014 100755 --- a/tests/UI/campaigns/sanity/03_catalogFO/01_filterProducts.spec.ts +++ b/tests/UI/campaigns/sanity/03_catalogFO/01_filterProducts.spec.ts @@ -52,24 +52,37 @@ test.describe('FO - Catalog : Filter Products by categories in Home page', async expect(allProductsNumber).toBeGreaterThan(0); }); - test('should filter products by the category \'Accessories\' and check result', async () => { + test('should filter products by category and check result', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'FilterProductByCategory', baseContext); - await foClassicCategoryPage.goToCategory(page, dataCategories.accessories.id); + if (allProductsNumber > 7) { + await foClassicCategoryPage.goToCategory(page, dataCategories.accessories.id); - const pageTitle = await foClassicCategoryPage.getPageTitle(page); - expect(pageTitle).toEqual(dataCategories.accessories.name); + const pageTitle = await foClassicCategoryPage.getPageTitle(page); + expect(pageTitle).toEqual(dataCategories.accessories.name); - const numberOfProducts = await foClassicCategoryPage.getNumberOfProducts(page); - expect(numberOfProducts).toBeLessThan(allProductsNumber); + const numberOfProducts = await foClassicCategoryPage.getNumberOfProducts(page); + expect(numberOfProducts).toBeLessThan(allProductsNumber); + } else { + await foClassicCategoryPage.goToCategory(page, dataCategories.oldWomen.id); + + const pageTitle = await foClassicCategoryPage.getPageTitle(page); + expect(pageTitle).toEqual(dataCategories.oldWomen.name); + + const numberOfProducts = await foClassicCategoryPage.getNumberOfProducts(page); + expect(numberOfProducts).toEqual(allProductsNumber); + } }); - test('should filter products by the subcategory \'Stationery\' and check result', async () => { + test('should filter products by the subcategory and check result', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'FilterProductBySubCategory', baseContext); await foClassicCategoryPage.reloadPage(page); - await foClassicCategoryPage.goToSubCategory(page, dataCategories.accessories.id, dataCategories.stationery.id); - + if (allProductsNumber > 7) { + await foClassicCategoryPage.goToSubCategory(page, dataCategories.accessories.id, dataCategories.stationery.id); + } else { + await foClassicCategoryPage.goToSubCategory(page, dataCategories.oldWomen.id, dataCategories.eveningDresses.id); + } const numberOfProducts = await foClassicCategoryPage.getNumberOfProducts(page); expect(numberOfProducts).toBeLessThan(allProductsNumber); }); diff --git a/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts b/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts index ef754db04..8b364de69 100755 --- a/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts +++ b/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts @@ -46,17 +46,25 @@ test.describe('FO - Catalog : Check the Product page', async () => { await foClassicHomePage.goToProductPage(page, 1); const pageTitle = await foClassicProductPage.getPageTitle(page); - expect(pageTitle).toContain(dataProducts.demo_1.name); + expect(pageTitle).toBeDefined(); }); test('should check the product page', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkProductPage', baseContext); const result = await foClassicProductPage.getProductInformation(page); - await Promise.all([ - expect(result.name).toEqual(dataProducts.demo_1.name), - expect(result.price).toEqual(dataProducts.demo_1.finalPrice), - expect(result.description).toContain(dataProducts.demo_1.description), - ]); + if (result.name === dataProducts.demo_1.name) { + await Promise.all([ + expect(result.name).toEqual(dataProducts.demo_1.name), + expect(result.price).toEqual(dataProducts.demo_1.finalPrice), + expect(result.description).toContain(dataProducts.demo_1.description), + ]); + } else { + await Promise.all([ + expect(result.name).toEqual(dataProducts.old_demo_1.name), + expect(result.price).toEqual(dataProducts.old_demo_1.finalPrice), + expect(result.description).toContain(dataProducts.old_demo_1.description), + ]); + } }); }); diff --git a/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts b/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts index fe7cdbe25..562709508 100755 --- a/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts +++ b/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts @@ -3,6 +3,7 @@ import { utilsTest, // Import FO pages foClassicHomePage, + foClassicCategoryPage, foClassicProductPage, foClassicCartPage, // Import data @@ -28,6 +29,7 @@ const psVersion = utilsTest.getPSVersion(); test.describe('FO - Cart : Check Cart in FO', async () => { let browserContext: BrowserContext; let page: Page; + let allProductsNumber: number = 0; let totalATI: number = 0; let itemsNumber: number = 0; @@ -49,20 +51,34 @@ test.describe('FO - Cart : Check Cart in FO', async () => { expect(isHomePage).toEqual(true); }); + test('should check and get the products number', async () => { + await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkNumberOfProducts', baseContext); + + await foClassicHomePage.goToAllProductsPage(page); + + allProductsNumber = await foClassicCategoryPage.getNumberOfProducts(page); + expect(allProductsNumber).toBeGreaterThan(0); + }); + test('should go to the first product page', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'goToProductPage1', baseContext); + await foClassicHomePage.goToHomePage(page); await foClassicHomePage.goToProductPage(page, 1); const pageTitle = await foClassicProductPage.getPageTitle(page); - expect(pageTitle).toContain(dataProducts.demo_1.name); + if (allProductsNumber > 7) { + expect(pageTitle).toContain(dataProducts.demo_1.name); + } else { + expect(pageTitle).toContain(dataProducts.old_demo_1.name); + } }); test('should add product to cart and check that the number of products is updated in cart header', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'addProductToCart1', baseContext); await foClassicProductPage.addProductToTheCart(page); - // getNumberFromText is used to get the notifications number in the cart + const notificationsNumber = await foClassicHomePage.getCartNotificationsNumber(page); expect(notificationsNumber).toEqual(1); }); @@ -82,7 +98,11 @@ test.describe('FO - Cart : Check Cart in FO', async () => { await foClassicHomePage.goToProductPage(page, 2); const pageTitle = await foClassicProductPage.getPageTitle(page); - expect(pageTitle).toContain(dataProducts.demo_3.name); + if (allProductsNumber > 7) { + expect(pageTitle).toContain(dataProducts.demo_3.name); + } else { + expect(pageTitle).toContain(dataProducts.old_demo_2.name); + } }); test('should add the second product to cart and check that the number of products is updated in cart header', async () => { @@ -90,7 +110,6 @@ test.describe('FO - Cart : Check Cart in FO', async () => { await foClassicProductPage.addProductToTheCart(page); - // getNumberFromText is used to get the notifications number in the cart const notificationsNumber = await foClassicHomePage.getCartNotificationsNumber(page); expect(notificationsNumber).toEqual(2); }); @@ -98,33 +117,59 @@ test.describe('FO - Cart : Check Cart in FO', async () => { test('should check the first product details', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkProductDetail1', baseContext); - const result = await foClassicCartPage.getProductDetail(page, 1); - await Promise.all([ - expect(result.name).toEqual(dataProducts.demo_1.name), - expect(result.price).toEqual(dataProducts.demo_1.finalPrice), - expect(result.quantity).toEqual(1), - ]); + if (allProductsNumber > 7) { + const result = await foClassicCartPage.getProductDetail(page, 1); + await Promise.all([ + expect(result.name).toEqual(dataProducts.demo_1.name), + expect(result.price).toEqual(dataProducts.demo_1.finalPrice), + expect(result.quantity).toEqual(1), + ]); + } else { + const productName = await foClassicCartPage.getProductName(page, 1); + expect(productName).toEqual(dataProducts.old_demo_1.name); + + const productPrice = await foClassicCartPage.getProductPrice(page, 1); + expect(productPrice).toEqual(dataProducts.old_demo_1.finalPrice); + + const productQuantity = await foClassicCartPage.getProductQuantity(page, 1); + expect(productQuantity).toEqual(1); + } }); test('should check the second product details', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkProductDetail2', baseContext); - const result = await foClassicCartPage.getProductDetail(page, 2); - await Promise.all([ - expect(result.name).toEqual(dataProducts.demo_3.name), - expect(result.price).toEqual(dataProducts.demo_3.finalPrice), - expect(result.quantity).toEqual(1), - ]); + if (allProductsNumber > 7) { + const result = await foClassicCartPage.getProductDetail(page, 2); + await Promise.all([ + expect(result.name).toEqual(dataProducts.demo_3.name), + expect(result.price).toEqual(dataProducts.demo_3.finalPrice), + expect(result.quantity).toEqual(1), + ]); + } else { + const productName = await foClassicCartPage.getProductName(page, 2); + expect(productName).toEqual(dataProducts.old_demo_2.name); + + const productPrice = await foClassicCartPage.getProductPrice(page, 2); + expect(productPrice).toEqual(dataProducts.old_demo_2.finalPrice); + + const productQuantity = await foClassicCartPage.getProductQuantity(page, 2); + expect(productQuantity).toEqual(1); + } }); // @todo : https://github.com/PrestaShop/PrestaShop/issues/9779 test.skip('should get the ATI price', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkTotalATI', baseContext); - // getNumberFromText is used to get the price ATI totalATI = await foClassicCartPage.getATIPrice(page); - expect(totalATI.toString()).toEqual((dataProducts.demo_3.finalPrice + dataProducts.demo_1.finalPrice) - .toFixed(2)); + if (allProductsNumber > 7) { + expect(totalATI.toString()).toEqual((dataProducts.demo_3.finalPrice + dataProducts.demo_1.finalPrice) + .toFixed(2)); + } else { + expect(totalATI.toString()).toEqual((dataProducts.old_demo_1.finalPrice + dataProducts.old_demo_2.finalPrice) + .toFixed(2)); + } }); test('should get the products number and check that is equal to 2', async () => { @@ -132,7 +177,6 @@ test.describe('FO - Cart : Check Cart in FO', async () => { totalATI = await foClassicCartPage.getATIPrice(page); - // getNumberFromText is used to get the products number itemsNumber = await foClassicCartPage.getProductsNumber(page); expect(itemsNumber).toEqual(2); }); @@ -142,11 +186,9 @@ test.describe('FO - Cart : Check Cart in FO', async () => { await foClassicCartPage.editProductQuantity(page, 1, 3); - // getNumberFromText is used to get the new price ATI const totalPrice = await foClassicCartPage.getATIPrice(page); expect(totalPrice).toBeGreaterThan(totalATI); - // getNumberFromText is used to get the new products number const productsNumber = await foClassicCartPage.getProductsNumber(page); expect(productsNumber).toBeGreaterThan(itemsNumber); }); diff --git a/tests/UI/campaigns/sanity/05_checkoutFO/01_orderProduct.spec.ts b/tests/UI/campaigns/sanity/05_checkoutFO/01_orderProduct.spec.ts index 1cfe7a3ec..067eeced0 100755 --- a/tests/UI/campaigns/sanity/05_checkoutFO/01_orderProduct.spec.ts +++ b/tests/UI/campaigns/sanity/05_checkoutFO/01_orderProduct.spec.ts @@ -4,6 +4,7 @@ import { // Import FO pages foClassicHomePage, foClassicLoginPage, + foClassicCategoryPage, foClassicCartPage, foClassicCheckoutPage, foClassicCheckoutOrderConfirmationPage, @@ -27,6 +28,7 @@ const baseContext: string = 'sanity_checkoutFO_orderProduct'; test.describe('BO - Checkout : Order a product and check order confirmation', async () => { let browserContext: BrowserContext; let page: Page; + let allProductsNumber: number = 0; test.beforeAll(async ({browser}) => { browserContext = await browser.newContext(); @@ -77,9 +79,19 @@ test.describe('BO - Checkout : Order a product and check order confirmation', as expect(result).toEqual(true); }); + test('should check and get the products number', async () => { + await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkNumberOfProducts', baseContext); + + await foClassicHomePage.goToAllProductsPage(page); + + allProductsNumber = await foClassicCategoryPage.getNumberOfProducts(page); + expect(allProductsNumber).toBeGreaterThan(0); + }); + test('should quick view the first product', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'quickViewFirstProduct', baseContext); + await foClassicHomePage.goToHomePage(page); await foClassicHomePage.quickViewProduct(page, 1); const isQuickViewModalVisible = await foClassicModalQuickViewPage.isQuickViewProductModalVisible(page); @@ -99,12 +111,23 @@ test.describe('BO - Checkout : Order a product and check order confirmation', as test('should check the cart details', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkCartDetails', baseContext); - const result = await foClassicCartPage.getProductDetail(page, 1); - await Promise.all([ - expect(result.name).toEqual(dataProducts.demo_1.name), - expect(result.price).toEqual(dataProducts.demo_1.finalPrice), - expect(result.quantity).toEqual(1), - ]); + if (allProductsNumber > 7) { + const result = await foClassicCartPage.getProductDetail(page, 1); + await Promise.all([ + expect(result.name).toEqual(dataProducts.demo_1.name), + expect(result.price).toEqual(dataProducts.demo_1.finalPrice), + expect(result.quantity).toEqual(1), + ]); + } else { + const productName = await foClassicCartPage.getProductName(page, 1); + expect(productName).toEqual(dataProducts.old_demo_1.name); + + const productPrice = await foClassicCartPage.getProductPrice(page, 1); + expect(productPrice).toEqual(dataProducts.old_demo_1.finalPrice); + + const productQuantity = await foClassicCartPage.getProductQuantity(page, 1); + expect(productQuantity).toEqual(1); + } }); test('should proceed to checkout and check Step Address', async () => { @@ -136,7 +159,7 @@ test.describe('BO - Checkout : Order a product and check order confirmation', as expect(isStepDeliveryComplete, 'Step Address is not complete').toEqual(true); }); - test('should Pay by back wire and confirm order', async () => { + test('should Pay by bank wire and confirm order', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'confirmOrder', baseContext); await foClassicCheckoutPage.choosePaymentAndOrder(page, dataPaymentMethods.wirePayment.moduleName); From 760cd3aa6252d1aae0e250bab0a4f8fb97aaeb1e Mon Sep 17 00:00:00 2001 From: nesrineabdmouleh Date: Thu, 14 Nov 2024 19:31:52 +0100 Subject: [PATCH 11/11] Fix lint errors --- .../02_productsBO/01_filterProducts.spec.ts | 4 +- .../03_catalogFO/02_checkProduct.spec.ts | 1 + .../sanity/04_cartFO/01_editCheckCart.spec.ts | 5 +- tests/UI/package-lock.json | 76 +++++++++---------- 4 files changed, 42 insertions(+), 44 deletions(-) diff --git a/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts b/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts index 820a62f2a..66f506622 100755 --- a/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts +++ b/tests/UI/campaigns/sanity/02_productsBO/01_filterProducts.spec.ts @@ -132,7 +132,7 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, expect(numberOfProducts).toBeGreaterThan(0); }); - const data = [ + [ { args: { identifier: 'filterIDMinMax', @@ -214,7 +214,7 @@ test.describe('BO - Catalog - Products : Filter the products table by ID, Name, filterValue = tst.args.filterValue; } else { // For PS version <= 1.7.2 - filterValue = tst.args.oldFilterValue + filterValue = tst.args.oldFilterValue; } if (semver.lt(psVersion, '8.1.0') && tst.args.filterBy === 'active') { diff --git a/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts b/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts index 8b364de69..1f1e656b3 100755 --- a/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts +++ b/tests/UI/campaigns/sanity/03_catalogFO/02_checkProduct.spec.ts @@ -53,6 +53,7 @@ test.describe('FO - Catalog : Check the Product page', async () => { await utilsTest.addContextItem(test.info(), 'testIdentifier', 'checkProductPage', baseContext); const result = await foClassicProductPage.getProductInformation(page); + if (result.name === dataProducts.demo_1.name) { await Promise.all([ expect(result.name).toEqual(dataProducts.demo_1.name), diff --git a/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts b/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts index 562709508..7a81e15a1 100755 --- a/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts +++ b/tests/UI/campaigns/sanity/04_cartFO/01_editCheckCart.spec.ts @@ -13,9 +13,9 @@ import { import { test, expect, Page, BrowserContext, } from '@playwright/test'; +import semver from 'semver'; const baseContext: string = 'sanity_cartFO_editCheckCart'; -import semver from 'semver'; const psVersion = utilsTest.getPSVersion(); @@ -67,6 +67,7 @@ test.describe('FO - Cart : Check Cart in FO', async () => { await foClassicHomePage.goToProductPage(page, 1); const pageTitle = await foClassicProductPage.getPageTitle(page); + if (allProductsNumber > 7) { expect(pageTitle).toContain(dataProducts.demo_1.name); } else { @@ -98,6 +99,7 @@ test.describe('FO - Cart : Check Cart in FO', async () => { await foClassicHomePage.goToProductPage(page, 2); const pageTitle = await foClassicProductPage.getPageTitle(page); + if (allProductsNumber > 7) { expect(pageTitle).toContain(dataProducts.demo_3.name); } else { @@ -202,6 +204,7 @@ test.describe('FO - Cart : Check Cart in FO', async () => { expect(totalPrice).toBeGreaterThan(totalATI); let productsNumber: number = 0; + if (semver.gte(psVersion, '7.8.0')) { productsNumber = await foClassicCartPage.getCartNotificationsNumber(page); } else { diff --git a/tests/UI/package-lock.json b/tests/UI/package-lock.json index 719e54289..499d71569 100644 --- a/tests/UI/package-lock.json +++ b/tests/UI/package-lock.json @@ -412,14 +412,14 @@ } }, "node_modules/@keycloak/keycloak-admin-client": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@keycloak/keycloak-admin-client/-/keycloak-admin-client-22.0.1.tgz", - "integrity": "sha512-/eKzNzT2hW/tRQd8/33dX1dfRU4xBsd3/30bL2OFF5+J+1UUmRYM2klYcFhdIkFX3P9/ptqH+vHpqCusdMcSCw==", + "version": "26.0.5", + "resolved": "https://registry.npmjs.org/@keycloak/keycloak-admin-client/-/keycloak-admin-client-26.0.5.tgz", + "integrity": "sha512-5AxA5e/RL7fzQ7j84t2T18ghv0Ge12q2RtwLlO0GwPv9IikBqx4s8e3Klo6shjGtVd7nvhj2GDjoyXtSnXYp9A==", + "license": "Apache-2.0", "dependencies": { "camelize-ts": "^3.0.0", - "lodash-es": "^4.17.21", "url-join": "^5.0.0", - "url-template": "^3.1.0" + "url-template": "^3.1.1" }, "engines": { "node": ">=18" @@ -497,13 +497,13 @@ }, "node_modules/@prestashop-core/ui-testing": { "version": "0.0.12", - "resolved": "git+ssh://git@github.com/PrestaShop/ui-testing-library.git#31c0af4bf1761fa32e0384f0935826098cc896ca", + "resolved": "git+ssh://git@github.com/PrestaShop/ui-testing-library.git#5719d1d76a2c20b1c58bafee09ebfe25362c33f7", "license": "MIT", "dependencies": { "@faker-js/faker": "^9.0.3", "@playwright/test": "^1.48.1", - "@s3pweb/keycloak-admin-client-cjs": "^22.0.1", - "@xmldom/xmldom": "^0.8.10", + "@s3pweb/keycloak-admin-client-cjs": "^26.0.0", + "@xmldom/xmldom": "^0.9.5", "csv-writer": "^1.6.0", "fast-xml-parser": "^4.4.0", "gunzip-file": "^0.1.1", @@ -518,11 +518,12 @@ } }, "node_modules/@s3pweb/keycloak-admin-client-cjs": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@s3pweb/keycloak-admin-client-cjs/-/keycloak-admin-client-cjs-22.0.1.tgz", - "integrity": "sha512-F8zr13/rR3QcDzKEty541rXaubU6+Yn/5aMzmSy6in5TeUL3FLqF0QmuW3g1xrgABywcGopew2sEq0X3qJfRUw==", + "version": "26.0.5", + "resolved": "https://registry.npmjs.org/@s3pweb/keycloak-admin-client-cjs/-/keycloak-admin-client-cjs-26.0.5.tgz", + "integrity": "sha512-/dEyIgVbo3OaKVsLbyDOBm+XbtP2PTkkSHHEwbp69gPMaQHoVnMsyv4IaObrQUu6WKzl6E4HDiiFeeudaakA6w==", + "license": "MIT", "dependencies": { - "@keycloak/keycloak-admin-client": "22.0.1" + "@keycloak/keycloak-admin-client": "26.0.5" } }, "node_modules/@socket.io/component-emitter": { @@ -769,11 +770,12 @@ "dev": true }, "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.5.tgz", + "integrity": "sha512-6g1EwSs8cr8JhP1iBxzyVAWM6BIDvx9Y3FZRIQiMDzgG43Pxi8YkWOZ0nQj2NHgNzgXDZbJewFx/n+YAvMZrfg==", + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.6" } }, "node_modules/abab": { @@ -1259,6 +1261,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelize-ts/-/camelize-ts-3.0.0.tgz", "integrity": "sha512-cgRwKKavoDKLTjO4FQTs3dRBePZp/2Y9Xpud0FhuCOTE86M2cniKN4CCXgRnsyXNMmQMifVHcv6SPaMtTx6ofQ==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -4005,11 +4008,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, "node_modules/lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -5976,6 +5974,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -5993,6 +5992,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/url-template/-/url-template-3.1.1.tgz", "integrity": "sha512-4oszoaEKE/mQOtAmdMWqIRHmkxWkUZMnXFnjQ5i01CuRSK3uluxcH1MRVVVWmhlnzT1SCDfKxxficm2G37qzCA==", + "license": "BSD-3-Clause", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -6664,14 +6664,13 @@ } }, "@keycloak/keycloak-admin-client": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@keycloak/keycloak-admin-client/-/keycloak-admin-client-22.0.1.tgz", - "integrity": "sha512-/eKzNzT2hW/tRQd8/33dX1dfRU4xBsd3/30bL2OFF5+J+1UUmRYM2klYcFhdIkFX3P9/ptqH+vHpqCusdMcSCw==", + "version": "26.0.5", + "resolved": "https://registry.npmjs.org/@keycloak/keycloak-admin-client/-/keycloak-admin-client-26.0.5.tgz", + "integrity": "sha512-5AxA5e/RL7fzQ7j84t2T18ghv0Ge12q2RtwLlO0GwPv9IikBqx4s8e3Klo6shjGtVd7nvhj2GDjoyXtSnXYp9A==", "requires": { "camelize-ts": "^3.0.0", - "lodash-es": "^4.17.21", "url-join": "^5.0.0", - "url-template": "^3.1.0" + "url-template": "^3.1.1" } }, "@mapbox/node-pre-gyp": { @@ -6726,13 +6725,13 @@ } }, "@prestashop-core/ui-testing": { - "version": "git+ssh://git@github.com/PrestaShop/ui-testing-library.git#31c0af4bf1761fa32e0384f0935826098cc896ca", + "version": "git+ssh://git@github.com/PrestaShop/ui-testing-library.git#5719d1d76a2c20b1c58bafee09ebfe25362c33f7", "from": "@prestashop-core/ui-testing@https://github.com/PrestaShop/ui-testing-library#main", "requires": { "@faker-js/faker": "^9.0.3", "@playwright/test": "^1.48.1", - "@s3pweb/keycloak-admin-client-cjs": "^22.0.1", - "@xmldom/xmldom": "^0.8.10", + "@s3pweb/keycloak-admin-client-cjs": "^26.0.0", + "@xmldom/xmldom": "^0.9.5", "csv-writer": "^1.6.0", "fast-xml-parser": "^4.4.0", "gunzip-file": "^0.1.1", @@ -6747,11 +6746,11 @@ } }, "@s3pweb/keycloak-admin-client-cjs": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@s3pweb/keycloak-admin-client-cjs/-/keycloak-admin-client-cjs-22.0.1.tgz", - "integrity": "sha512-F8zr13/rR3QcDzKEty541rXaubU6+Yn/5aMzmSy6in5TeUL3FLqF0QmuW3g1xrgABywcGopew2sEq0X3qJfRUw==", + "version": "26.0.5", + "resolved": "https://registry.npmjs.org/@s3pweb/keycloak-admin-client-cjs/-/keycloak-admin-client-cjs-26.0.5.tgz", + "integrity": "sha512-/dEyIgVbo3OaKVsLbyDOBm+XbtP2PTkkSHHEwbp69gPMaQHoVnMsyv4IaObrQUu6WKzl6E4HDiiFeeudaakA6w==", "requires": { - "@keycloak/keycloak-admin-client": "22.0.1" + "@keycloak/keycloak-admin-client": "26.0.5" } }, "@socket.io/component-emitter": { @@ -6906,9 +6905,9 @@ "dev": true }, "@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.5.tgz", + "integrity": "sha512-6g1EwSs8cr8JhP1iBxzyVAWM6BIDvx9Y3FZRIQiMDzgG43Pxi8YkWOZ0nQj2NHgNzgXDZbJewFx/n+YAvMZrfg==" }, "abab": { "version": "2.0.6", @@ -9278,11 +9277,6 @@ "p-locate": "^5.0.0" } }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",