From 7d8f3fe570c807ad31298b8dc4e129ba52354e9f Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 17:53:16 +0100 Subject: [PATCH 01/12] Tests e2e playwright Print - refactoring in print requests --- tests/end2end/playwright/print.spec.js | 174 ++++++++++++++----------- 1 file changed, 95 insertions(+), 79 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index bf7eec2507..84e433aa5d 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -44,25 +44,33 @@ test.describe('Print', () => { test('Print requests', async ({ page }) => { // Test `print_labels` template - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) - expect(postData).toContain('map0%3ASCALE=100000') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255&simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(postData).toContain('multiline_label=Multiline%20label'); - }); + let getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + + // check request + let getPrintRequest = await getPrintPromise; + let getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) + expect(getPrintPostData).toContain('map0%3ASCALE=100000') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255&simple_label=simple%20label'); + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); // Close message await page.locator('.btn-close').click(); @@ -70,76 +78,54 @@ test.describe('Print', () => { // Test `print_map` template await page.locator('#print-template').selectOption('1'); - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=jpeg') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=200') - expect(postData).toContain('TEMPLATE=print_map') - expect(postData).toMatch(/map0%3AEXTENT=765699.\d+%2C6271792.\d+%2C775499.\d+%2C6286992.\d+/) - expect(postData).toContain('map0%3ASCALE=100000') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - }); - + getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); await page.locator('#print-launch').click(); - - // Close message - await page.locator('.btn-close').click(); + getPrintRequest = await getPrintPromise; + getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=jpeg') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=200') + expect(getPrintPostData).toContain('TEMPLATE=print_map') + expect(getPrintPostData).toMatch(/map0%3AEXTENT=765699.\d+%2C6271792.\d+%2C775499.\d+%2C6286992.\d+/) + expect(getPrintPostData).toContain('map0%3ASCALE=100000') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); // Test `print_overview` template await page.locator('#print-template').selectOption('2'); + getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_overview') - expect(postData).toMatch(/map1%3AEXTENT=757949.\d+%2C6270842.\d+%2C783249.\d+%2C6287942.\d+/) - expect(postData).toContain('map1%3ASCALE=100000') - expect(postData).toContain('map1%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map1%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map1%3AOPACITIES=204%2C255%2C255') - expect(postData).toMatch(/map0%3AEXTENT=761864.\d+%2C6274266.\d+%2C779334.\d+%2C6284518.\d+/); - }); + // Launch print await page.locator('#print-launch').click(); - + // check message + await expect(page.locator('div.alert')).toHaveCount(1) // Close message - await page.locator('.btn-close').click(); + await page.locator('div.alert button.btn-close').click(); - // Redlining with circle - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) - expect(postData).toContain('map0%3ASCALE=100000') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(postData).toMatch(/map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON\(CIRCULARSTRING\(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206281972.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20778193.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206276044.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+\)\)/) - expect(postData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') - expect(postData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(postData).toContain('multiline_label=Multiline%20label'); - }); + // check request + getPrintRequest = await getPrintPromise; + getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_overview') + expect(getPrintPostData).toMatch(/map1%3AEXTENT=757949.\d+%2C6270842.\d+%2C783249.\d+%2C6287942.\d+/) + expect(getPrintPostData).toContain('map1%3ASCALE=100000') + expect(getPrintPostData).toContain('map1%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map1%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map1%3AOPACITIES=204%2C255%2C255') + expect(getPrintPostData).toMatch(/map0%3AEXTENT=761864.\d+%2C6274266.\d+%2C779334.\d+%2C6284518.\d+/); + // Redlining with circle await page.locator('#button-draw').click(); await page.getByRole('button', { name: 'Toggle Dropdown' }).click(); await page.locator('#draw .digitizing-circle > svg').click(); @@ -158,7 +144,37 @@ test.describe('Print', () => { await page.locator('#button-print').click(); await page.locator('#print-scale').selectOption('100000'); + + getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + + // check request + getPrintRequest = await getPrintPromise; + getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) + expect(getPrintPostData).toContain('map0%3ASCALE=100000') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') + expect(getPrintPostData).toMatch(/map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON\(CIRCULARSTRING\(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206281972.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20778193.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206276044.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+\)\)/) + expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') + expect(getPrintPostData).toContain('simple_label=simple%20label'); + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); }); test('Print requests with selection', async ({ page }) => { From 4be146de899711bcac741b2946fc1b360db79f71 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 17:54:12 +0100 Subject: [PATCH 02/12] Tests e2e playwright Print - refactoring in print with selection --- tests/end2end/playwright/print.spec.js | 45 ++++++++++++++------------ 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 84e433aa5d..e2d689fb46 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -184,29 +184,32 @@ test.describe('Print', () => { await page.locator('lizmap-feature-toolbar:nth-child(1) > div:nth-child(1) > button:nth-child(1)').first().click(); await page.locator('#bottom-dock-window-buttons .btn-bottomdock-clear').click(); - page.on('request', request => { - if (request.method() === "POST") { - const postData = request.postData(); - if (postData != null && postData.includes('GetPrint')) { - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toContain('map0%3ASCALE=100000') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - expect(postData).toContain('simple_label=simple%20label'); - expect(postData).toContain('SELECTIONTOKEN='); - } - } - }); + const getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + + // check request + const getPrintRequest = await getPrintPromise; + const getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toContain('map0%3ASCALE=100000') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); + expect(getPrintPostData).toContain('simple_label=simple%20label'); + expect(getPrintPostData).toContain('SELECTIONTOKEN='); }); test('Print requests with filter', async ({ page }) => { From 552b7b41a6808b46b35bab07a1a2dd235edf9185 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 17:55:22 +0100 Subject: [PATCH 03/12] Tests e2e playwright Print - refactoring in print with filter --- tests/end2end/playwright/print.spec.js | 47 ++++++++++++++------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index e2d689fb46..884ab0cb44 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -228,30 +228,33 @@ test.describe('Print', () => { let getFilterTokenPromise = page.waitForResponse(responseMatchGetFilterTokenFunc); await getFilterTokenPromise; - page.on('request', request => { - if (request.method() === "POST") { - const postData = request.postData(); - if (postData != null && postData.includes('GetPrint')) { - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toContain('map0%3ASCALE=100000') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - expect(postData).toContain('simple_label=simple%20label'); - expect(postData).toContain('FILTERTOKEN='); - } - } - }); - await page.locator('#bottom-dock-window-buttons .btn-bottomdock-clear').click(); + const getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + + // check request + const getPrintRequest = await getPrintPromise; + const getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toContain('map0%3ASCALE=100000') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); + expect(getPrintPostData).toContain('simple_label=simple%20label'); + expect(getPrintPostData).toContain('FILTERTOKEN='); }); }); From 6a8d4cf397171402de7c053c2d1ed536922e65b8 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 17:57:10 +0100 Subject: [PATCH 04/12] Tests e2e playwright Print - refactoring in atlas print in popup requests --- tests/end2end/playwright/print.spec.js | 43 ++++++++++++-------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 884ab0cb44..7ec1419844 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -294,34 +294,29 @@ test.describe('Print in popup', () => { // Test `atlas_quartiers` print atlas request const featureAtlasQuartiers = page.locator('#popupcontent lizmap-feature-toolbar[value="quartiers_cc80709a_cd4a_41de_9400_1f492b32c9f7.1"] .feature-atlas'); - page.on('request', request => { - if (request.method() === "POST") { - const postData = request.postData(); - if (postData != null && postData.includes('GetPrint')) { - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrintAtlas') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).not.toContain('CRS=EPSG%3A2154') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=atlas_quartiers') - expect(postData).not.toContain('LAYERS=quartiers') - expect(postData).toContain('LAYER=quartiers') - expect(postData).not.toContain('ATLAS_PK=1') - expect(postData).toContain('EXP_FILTER=%24id%20IN%20(1)') - } - } - }); - + const getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); await featureAtlasQuartiers.locator('button').click(); + const getPrintRequest = await getPrintPromise; + const getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrintAtlas') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).not.toContain('CRS=EPSG%3A2154') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=atlas_quartiers') + expect(getPrintPostData).not.toContain('LAYERS=quartiers') + expect(getPrintPostData).toContain('LAYER=quartiers') + expect(getPrintPostData).not.toContain('ATLAS_PK=1') + expect(getPrintPostData).toContain('EXP_FILTER=%24id%20IN%20(1)') // Test `atlas_quartiers` print atlas response - const responsePromise = page.waitForResponse(response => response.status() === 200); - const response = await responsePromise; + const response = await getPrintRequest.response(); + await expect(response?.status()).toBe(200) - expect(response.headers()['content-type']).toBe('application/pdf'); - expect(response.headers()['content-disposition']).toBe('attachment; filename="print_atlas_quartiers.pdf"'); + expect(response?.headers()['content-type']).toBe('application/pdf'); + expect(response?.headers()['content-disposition']).toBe('attachment; filename="print_atlas_quartiers.pdf"'); }); }); From b61928c105f152c1d3bf516f6c25e831a24064e7 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 17:58:41 +0100 Subject: [PATCH 05/12] Tests e2e playwright Print - refactoring in print requests 3857 --- tests/end2end/playwright/print.spec.js | 140 ++++++++++++++----------- 1 file changed, 78 insertions(+), 62 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 7ec1419844..ffbbef5ba5 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -454,78 +454,64 @@ test.describe('Print 3857', () => { test('Print requests', async ({ page }) => { // Test `print_labels` template - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A3857') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') - expect(postData).toContain('map0%3ASCALE=72224') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(postData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(postData).toContain('multiline_label=Multiline%20label'); - }); - await page.locator('#print-launch').click(); + let getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + // Launch print + await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) // Close message - await page.locator('.btn-close').click(); + await page.locator('div.alert button.btn-close').click(); + + // check request + let getPrintRequest = await getPrintPromise; + let getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A3857') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') + expect(getPrintPostData).toContain('map0%3ASCALE=72224') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') + expect(getPrintPostData).toContain('simple_label=simple%20label'); + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); // Test `print_map` template await page.locator('#print-template').selectOption('1'); + getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=jpeg') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A3857') - expect(postData).toContain('DPI=200') - expect(postData).toContain('TEMPLATE=print_map') - expect(postData).toContain('map0%3AEXTENT=427751.45455%2C5399801.343900001%2C434829.4065500001%2C5410779.391900001') - expect(postData).toContain('map0%3ASCALE=72224') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - }); - + // Launch print await page.locator('#print-launch').click(); - + // check message + await expect(page.locator('div.alert')).toHaveCount(1) // Close message - await page.locator('.btn-close').click(); + await page.locator('div.alert button.btn-close').click(); - // Redlining with circle - page.once('request', request => { - const postData = request.postData(); - expect(postData).toContain('SERVICE=WMS') - expect(postData).toContain('REQUEST=GetPrint') - expect(postData).toContain('VERSION=1.3.0') - expect(postData).toContain('FORMAT=pdf') - expect(postData).toContain('TRANSPARENT=true') - expect(postData).toContain('CRS=EPSG%3A3857') - expect(postData).toContain('DPI=100') - expect(postData).toContain('TEMPLATE=print_labels') - expect(postData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') - expect(postData).toContain('map0%3ASCALE=72224') - expect(postData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(postData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(postData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(postData).toContain('map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON(CIRCULARSTRING(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205409017.355447453%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20442259.82652646507%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205400455.043442567%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501))') - expect(postData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') - expect(postData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(postData).toContain('multiline_label=Multiline%20label'); - }); + // check request + getPrintRequest = await getPrintPromise; + getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=jpeg') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A3857') + expect(getPrintPostData).toContain('DPI=200') + expect(getPrintPostData).toContain('TEMPLATE=print_map') + expect(getPrintPostData).toContain('map0%3AEXTENT=427751.45455%2C5399801.343900001%2C434829.4065500001%2C5410779.391900001') + expect(getPrintPostData).toContain('map0%3ASCALE=72224') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') + // Redlining with circle await page.locator('#button-draw').click(); await page.getByRole('button', { name: 'Toggle Dropdown' }).click(); await page.locator('#draw .digitizing-circle > svg').click(); @@ -544,7 +530,37 @@ test.describe('Print 3857', () => { await page.locator('#button-print').click(); await page.locator('#print-scale').selectOption('72224'); + + getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + + // check request + getPrintRequest = await getPrintPromise; + getPrintPostData = getPrintRequest.postData(); + expect(getPrintPostData).toContain('SERVICE=WMS') + expect(getPrintPostData).toContain('REQUEST=GetPrint') + expect(getPrintPostData).toContain('VERSION=1.3.0') + expect(getPrintPostData).toContain('FORMAT=pdf') + expect(getPrintPostData).toContain('TRANSPARENT=true') + expect(getPrintPostData).toContain('CRS=EPSG%3A3857') + expect(getPrintPostData).toContain('DPI=100') + expect(getPrintPostData).toContain('TEMPLATE=print_labels') + expect(getPrintPostData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') + expect(getPrintPostData).toContain('map0%3ASCALE=72224') + expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') + expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') + expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') + expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON(CIRCULARSTRING(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205409017.355447453%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20442259.82652646507%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205400455.043442567%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501))') + expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') + expect(getPrintPostData).toContain('simple_label=simple%20label'); + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); }); }); From 53ea192ba80b06f24521e64b6259eb67c8012008 Mon Sep 17 00:00:00 2001 From: rldhont Date: Wed, 29 Jan 2025 18:00:26 +0100 Subject: [PATCH 06/12] Tests e2e playwright Print - refactoring in print requests base layers --- tests/end2end/playwright/print.spec.js | 40 +++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index ffbbef5ba5..6ea71ce359 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -577,8 +577,15 @@ test.describe('Print base layers', () => { test('Print requests', async ({ page }) => { // Print osm-mapnik let getPrintRequestPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + // check request let getPrintRequest = await getPrintRequestPromise; let getPrintPostData = getPrintRequest.postData(); expect(getPrintPostData).toContain('SERVICE=WMS') @@ -589,13 +596,14 @@ test.describe('Print base layers', () => { expect(getPrintPostData).toContain('CRS=EPSG%3A3857') expect(getPrintPostData).toContain('DPI=100') expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(postData).toContain('map0%3AEXTENT=') + //expect(getPrintPostData).toContain('map0%3AEXTENT=') expect(getPrintPostData).toContain('map0%3ASCALE=72224') expect(getPrintPostData).toContain('map0%3ALAYERS=osm-mapnik&') expect(getPrintPostData).toContain('map0%3ASTYLES=d%C3%A9faut&') expect(getPrintPostData).toContain('map0%3AOPACITIES=255') let getPrintResponse = await getPrintRequest.response(); + await expect(getPrintResponse?.status()).toBe(200) expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print osm-mapnik & quartiers @@ -605,8 +613,15 @@ test.describe('Print base layers', () => { await getMapRequest.response(); getPrintRequestPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + // check request getPrintRequest = await getPrintRequestPromise; getPrintPostData = getPrintRequest.postData(); expect(getPrintPostData).not.toBeNull() @@ -618,13 +633,14 @@ test.describe('Print base layers', () => { expect(getPrintPostData).toContain('CRS=EPSG%3A3857') expect(getPrintPostData).toContain('DPI=100') expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(postData).toContain('map0%3AEXTENT=') + //expect(getPrintPostData).toContain('map0%3AEXTENT=') expect(getPrintPostData).toContain('map0%3ASCALE=72224') expect(getPrintPostData).toContain('map0%3ALAYERS=osm-mapnik%2Cquartiers&') expect(getPrintPostData).toContain('map0%3ASTYLES=d%C3%A9faut%2Cdefault&') expect(getPrintPostData).toContain('map0%3AOPACITIES=255%2C255') getPrintResponse = await getPrintRequest.response(); + await expect(getPrintResponse?.status()).toBe(200) expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print quartiers not open-topo-map @@ -633,8 +649,15 @@ test.describe('Print base layers', () => { await page.waitForResponse(response => response.status() === 200 && response.headers()['content-type'] === 'image/png'); getPrintRequestPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + // check request getPrintRequest = await getPrintRequestPromise; getPrintPostData = getPrintRequest.postData(); expect(getPrintPostData).not.toBeNull() @@ -646,13 +669,14 @@ test.describe('Print base layers', () => { expect(getPrintPostData).toContain('CRS=EPSG%3A3857') expect(getPrintPostData).toContain('DPI=100') expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(postData).toContain('map0%3AEXTENT=') + //expect(getPrintPostData).toContain('map0%3AEXTENT=') expect(getPrintPostData).toContain('map0%3ASCALE=72224') expect(getPrintPostData).toContain('map0%3ALAYERS=quartiers&') expect(getPrintPostData).toContain('map0%3ASTYLES=default&') expect(getPrintPostData).toContain('map0%3AOPACITIES=255') getPrintResponse = await getPrintRequest.response(); + await expect(getPrintResponse?.status()).toBe(200) expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print quartiers_baselayer & quartiers @@ -661,8 +685,15 @@ test.describe('Print base layers', () => { await getMapRequest.response(); getPrintRequestPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); + + // Launch print await page.locator('#print-launch').click(); + // check message + await expect(page.locator('div.alert')).toHaveCount(1) + // Close message + await page.locator('div.alert button.btn-close').click(); + // check request getPrintRequest = await getPrintRequestPromise; getPrintPostData = getPrintRequest.postData(); expect(getPrintPostData).not.toBeNull() @@ -674,13 +705,14 @@ test.describe('Print base layers', () => { expect(getPrintPostData).toContain('CRS=EPSG%3A3857') expect(getPrintPostData).toContain('DPI=100') expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(postData).toContain('map0%3AEXTENT=') + //expect(getPrintPostData).toContain('map0%3AEXTENT=') expect(getPrintPostData).toContain('map0%3ASCALE=72224') expect(getPrintPostData).toContain('map0%3ALAYERS=quartiers_baselayer%2Cquartiers&') expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cdefault&') expect(getPrintPostData).toContain('map0%3AOPACITIES=255%2C255') getPrintResponse = await getPrintRequest.response(); + await expect(getPrintResponse?.status()).toBe(200) expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); }); }); From be766ae45682df147b43adc22c3284b2f92b2e3e Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:10:09 +0100 Subject: [PATCH 07/12] Tests e2e playwright Print - using expectParametersToContain in print requests --- tests/end2end/playwright/print.spec.js | 150 ++++++++++++++----------- 1 file changed, 85 insertions(+), 65 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 6ea71ce359..3da1936d2f 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -1,6 +1,6 @@ // @ts-check import { test, expect } from '@playwright/test'; -import { gotoMap } from './globals'; +import { gotoMap, expectParametersToContain } from './globals'; test.describe('Print', () => { @@ -43,6 +43,17 @@ test.describe('Print', () => { }); test('Print requests', async ({ page }) => { + // Required GetPrint parameters + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrint', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'CRS': 'EPSG:2154', + 'DPI': '100', + 'TEMPLATE': 'print_labels', + } // Test `print_labels` template let getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); @@ -55,22 +66,19 @@ test.describe('Print', () => { // check request let getPrintRequest = await getPrintPromise; - let getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) - expect(getPrintPostData).toContain('map0%3ASCALE=100000') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255&simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); + // Extend GetPrint parameters + const expectedParameters1 = Object.assign({}, expectedParameters, { + 'map0:EXTENT': /759249.\d+,6271892.\d+,781949.\d+,6286892.\d+/, + 'map0:SCALE': '100000', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'simple_label': 'simple label', + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // 'multiline_label': 'Multiline label', + }) + let getPrintParams = await expectParametersToContain('Print requests 1', getPrintRequest.postData() ?? '', expectedParameters1) + await expect(getPrintParams.size).toBe(15) // Close message await page.locator('.btn-close').click(); @@ -81,20 +89,19 @@ test.describe('Print', () => { getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); await page.locator('#print-launch').click(); getPrintRequest = await getPrintPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=jpeg') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=200') - expect(getPrintPostData).toContain('TEMPLATE=print_map') - expect(getPrintPostData).toMatch(/map0%3AEXTENT=765699.\d+%2C6271792.\d+%2C775499.\d+%2C6286992.\d+/) - expect(getPrintPostData).toContain('map0%3ASCALE=100000') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); + // Extend and update GetPrint parameters + const expectedParameters2 = Object.assign({}, expectedParameters, { + 'FORMAT': 'jpeg', + 'DPI': '200', + 'TEMPLATE': 'print_map', + 'map0:EXTENT': /765699.\d+,6271792.\d+,775499.\d+,6286992.\d+/, + 'map0:SCALE': '100000', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + }) + getPrintParams = await expectParametersToContain('Print requests 2', getPrintRequest.postData() ?? '', expectedParameters2) + await expect(getPrintParams.size).toBe(13) // Test `print_overview` template await page.locator('#print-template').selectOption('2'); @@ -109,21 +116,18 @@ test.describe('Print', () => { // check request getPrintRequest = await getPrintPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_overview') - expect(getPrintPostData).toMatch(/map1%3AEXTENT=757949.\d+%2C6270842.\d+%2C783249.\d+%2C6287942.\d+/) - expect(getPrintPostData).toContain('map1%3ASCALE=100000') - expect(getPrintPostData).toContain('map1%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map1%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map1%3AOPACITIES=204%2C255%2C255') - expect(getPrintPostData).toMatch(/map0%3AEXTENT=761864.\d+%2C6274266.\d+%2C779334.\d+%2C6284518.\d+/); + // Extend and update GetPrint parameters + const expectedParameters3 = Object.assign({}, expectedParameters, { + 'TEMPLATE': 'print_overview', + 'map1:EXTENT': /757949.\d+,6270842.\d+,783249.\d+,6287942.\d+/, + 'map1:SCALE': '100000', + 'map1:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map1:STYLES': 'default,défaut,défaut', + 'map1:OPACITIES': '204,255,255', + 'map0:EXTENT': /761864.\d+,6274266.\d+,779334.\d+,6284518.\d+/, + }) + getPrintParams = await expectParametersToContain('Print requests 3', getPrintRequest.postData() ?? '', expectedParameters3) + await expect(getPrintParams.size).toBe(14) // Redlining with circle await page.locator('#button-draw').click(); @@ -156,25 +160,41 @@ test.describe('Print', () => { // check request getPrintRequest = await getPrintPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toMatch(/map0%3AEXTENT=759249.\d+%2C6271892.\d+%2C781949.\d+%2C6286892.\d+/) - expect(getPrintPostData).toContain('map0%3ASCALE=100000') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(getPrintPostData).toMatch(/map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON\(CIRCULARSTRING\(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206281972.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20778193.\d+%206279008.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20775229.\d+%206276044.\d+%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20772265.\d+%206279008.\d+\)\)/) - expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') - expect(getPrintPostData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); + // Extend and update GetPrint parameters + const expectedParameters4 = Object.assign({}, expectedParameters, { + 'TEMPLATE': 'print_labels', + 'map0:EXTENT': /759249.\d+,6271892.\d+,781949.\d+,6286892.\d+/, + 'map0:SCALE': '100000', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'map0:HIGHLIGHT_GEOM': /CURVEPOLYGON\(CIRCULARSTRING\(\n +772265.\d+ 6279008.\d+,\n +775229.\d+ 6281972.\d+,\n +778193.\d+ 6279008.\d+,\n +775229.\d+ 6276044.\d+,\n +772265.\d+ 6279008.\d+\)\)/, + 'map0:HIGHLIGHT_SYMBOL': ` + + + + + + + #ff0000 + 1 + 2 + + + #ff0000 + 0.2 + + + + + + `, + 'simple_label': 'simple label', + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // 'multiline_label': 'Multiline label', + }) + getPrintParams = await expectParametersToContain('Print requests 4', getPrintRequest.postData() ?? '', expectedParameters4) + await expect(getPrintParams.size).toBe(17) }); test('Print requests with selection', async ({ page }) => { From 707808bbc913527718aea51b2004bbb1fd3a3054 Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:10:36 +0100 Subject: [PATCH 08/12] Tests e2e playwright Print - using expectParametersToContain in print with selection --- tests/end2end/playwright/print.spec.js | 34 ++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 3da1936d2f..f5f83ca775 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -215,21 +215,25 @@ test.describe('Print', () => { // check request const getPrintRequest = await getPrintPromise; - const getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toContain('map0%3ASCALE=100000') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - expect(getPrintPostData).toContain('simple_label=simple%20label'); - expect(getPrintPostData).toContain('SELECTIONTOKEN='); + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrint', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'CRS': 'EPSG:2154', + 'DPI': '100', + 'TEMPLATE': 'print_labels', + 'map0:EXTENT': /759249.\d+,6271892.\d+,781949.\d+,6286892.\d+/, + 'map0:SCALE': '100000', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'simple_label': 'simple label', + 'SELECTIONTOKEN': /[a-z\d]+/, + } + const getPrintParams = await expectParametersToContain('Print requests with selection', getPrintRequest.postData() ?? '', expectedParameters) + await expect(getPrintParams.size).toBe(16) }); test('Print requests with filter', async ({ page }) => { From 4b44369cf901df6d998dcd871bcfae926e5971da Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:10:57 +0100 Subject: [PATCH 09/12] Tests e2e playwright Print - using expectParametersToContain in print with filter --- tests/end2end/playwright/print.spec.js | 34 ++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index f5f83ca775..b97d4f586f 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -264,21 +264,25 @@ test.describe('Print', () => { // check request const getPrintRequest = await getPrintPromise; - const getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toContain('map0%3ASCALE=100000') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255'); - expect(getPrintPostData).toContain('simple_label=simple%20label'); - expect(getPrintPostData).toContain('FILTERTOKEN='); + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrint', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'CRS': 'EPSG:2154', + 'DPI': '100', + 'TEMPLATE': 'print_labels', + 'map0:EXTENT': /759249.\d+,6271892.\d+,781949.\d+,6286892.\d+/, + 'map0:SCALE': '100000', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'simple_label': 'simple label', + 'FILTERTOKEN': /[a-z\d]+/, + } + const getPrintParams = await expectParametersToContain('Print requests with filter', getPrintRequest.postData() ?? '', expectedParameters) + await expect(getPrintParams.size).toBe(16) }); }); From f9aba8204fde304a512a4f6fdff905b0c0e483dd Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:11:30 +0100 Subject: [PATCH 10/12] Tests e2e playwright Print - using expectParametersToContain in atlas print in popup requests --- tests/end2end/playwright/print.spec.js | 33 ++++++++++++++------------ 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index b97d4f586f..d255b48cf8 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -325,26 +325,29 @@ test.describe('Print in popup', () => { const getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); await featureAtlasQuartiers.locator('button').click(); const getPrintRequest = await getPrintPromise; - const getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrintAtlas') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).not.toContain('CRS=EPSG%3A2154') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=atlas_quartiers') - expect(getPrintPostData).not.toContain('LAYERS=quartiers') - expect(getPrintPostData).toContain('LAYER=quartiers') - expect(getPrintPostData).not.toContain('ATLAS_PK=1') - expect(getPrintPostData).toContain('EXP_FILTER=%24id%20IN%20(1)') + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrintAtlas', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'DPI': '100', + 'TEMPLATE': 'atlas_quartiers', + 'LAYER': 'quartiers', + 'EXP_FILTER': '$id IN (1)', + } + const getPrintParams = await expectParametersToContain('Atlas print in popup requests', getPrintRequest.postData() ?? '', expectedParameters) + await expect(getPrintParams.size).toBe(10) + await expect(getPrintParams.has('CRS')).toBe(false) + await expect(getPrintParams.has('LAYERS')).toBe(false) + await expect(getPrintParams.has('ATLAS_PK')).toBe(false) // Test `atlas_quartiers` print atlas response const response = await getPrintRequest.response(); await expect(response?.status()).toBe(200) - expect(response?.headers()['content-type']).toBe('application/pdf'); - expect(response?.headers()['content-disposition']).toBe('attachment; filename="print_atlas_quartiers.pdf"'); + await expect(response?.headers()['content-type']).toBe('application/pdf'); + await expect(response?.headers()['content-disposition']).toBe('attachment; filename="print_atlas_quartiers.pdf"'); }); }); From a3f9d3816897623521f8ba8a7d5616c3d081728a Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:14:55 +0100 Subject: [PATCH 11/12] Tests e2e playwright Print - using expectParametersToContain in print requests 3857 --- tests/end2end/playwright/print.spec.js | 124 +++++++++++++++---------- 1 file changed, 74 insertions(+), 50 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index d255b48cf8..889c986d3e 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -484,6 +484,17 @@ test.describe('Print 3857', () => { }); test('Print requests', async ({ page }) => { + // Required GetPrint parameters + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrint', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'CRS': 'EPSG:3857', + 'DPI': '100', + 'TEMPLATE': 'print_labels', + } // Test `print_labels` template let getPrintPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); @@ -496,23 +507,19 @@ test.describe('Print 3857', () => { // check request let getPrintRequest = await getPrintPromise; - let getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(getPrintPostData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); + // Extend GetPrint parameters + const expectedParameters1 = Object.assign({}, expectedParameters, { + 'map0:EXTENT': /423093.\d+,5399873.\d+,439487.\d+,5410707.\d+/, + 'map0:SCALE': '72224', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'simple_label': 'simple label', + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // 'multiline_label': 'Multiline label', + }) + let getPrintParams = await expectParametersToContain('Print requests 1', getPrintRequest.postData() ?? '', expectedParameters1) + await expect(getPrintParams.size).toBe(15) // Test `print_map` template await page.locator('#print-template').selectOption('1'); @@ -527,20 +534,22 @@ test.describe('Print 3857', () => { // check request getPrintRequest = await getPrintPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=jpeg') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=200') - expect(getPrintPostData).toContain('TEMPLATE=print_map') - expect(getPrintPostData).toContain('map0%3AEXTENT=427751.45455%2C5399801.343900001%2C434829.4065500001%2C5410779.391900001') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') + // Extend and update GetPrint parameters + const expectedParameters2 = Object.assign({}, expectedParameters, { + 'FORMAT': 'jpeg', + 'DPI': '200', + 'TEMPLATE': 'print_map', + 'map0:EXTENT': /427751.\d+,5399801.\d+,434829.\d+,5410779.\d+/, + 'map0:SCALE': '72224', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + }) + getPrintParams = await expectParametersToContain('Print requests 2', getPrintRequest.postData() ?? '', expectedParameters2) + await expect(getPrintParams.size).toBe(13) + + // Close message + await page.locator('.btn-close').click(); // Redlining with circle await page.locator('#button-draw').click(); @@ -573,25 +582,40 @@ test.describe('Print 3857', () => { // check request getPrintRequest = await getPrintPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=print_labels') - expect(getPrintPostData).toContain('map0%3AEXTENT=423093.00655000005%2C5399873.567900001%2C439487.85455000005%2C5410707.167900001') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=OpenStreetMap%2Cquartiers%2Csousquartiers') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cd%C3%A9faut%2Cd%C3%A9faut') - expect(getPrintPostData).toContain('map0%3AOPACITIES=204%2C255%2C255') - expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_GEOM=CURVEPOLYGON(CIRCULARSTRING(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205409017.355447453%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20442259.82652646507%205404736.19944501%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20437978.67052402196%205400455.043442567%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20433697.51452157885%205404736.19944501))') - expect(getPrintPostData).toContain('map0%3AHIGHLIGHT_SYMBOL=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%20%20%20%20%3CStyledLayerDescriptor%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%221.1.0%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20http%3A%2F%2Fschemas.opengis.net%2Fsld%2F1.1.0%2FStyledLayerDescriptor.xsd%22%20xmlns%3Ase%3D%22http%3A%2F%2Fwww.opengis.net%2Fse%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CUserStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CStroke%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-opacity%22%3E1%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22stroke-width%22%3E2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FStroke%3E%0A%20%20%20%20%20%20%20%20%3CFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill%22%3E%23ff0000%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CSvgParameter%20name%3D%22fill-opacity%22%3E0.2%3C%2FSvgParameter%3E%0A%20%20%20%20%20%20%20%20%3C%2FFill%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FPolygonSymbolizer%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRule%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FFeatureTypeStyle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FUserStyle%3E%0A%20%20%20%20%20%20%20%20%3C%2FStyledLayerDescriptor%3E') - expect(getPrintPostData).toContain('simple_label=simple%20label'); - // Disabled because of the migration when project is saved with QGIS >= 3.32 - // expect(getPrintPostData).toContain('multiline_label=Multiline%20label'); + // Extend and update GetPrint parameters + const expectedParameters3 = Object.assign({}, expectedParameters, { + 'map0:EXTENT': /423093.\d+,5399873.\d+,439487.\d+,5410707.\d+/, + 'map0:SCALE': '72224', + 'map0:LAYERS': 'OpenStreetMap,quartiers,sousquartiers', + 'map0:STYLES': 'default,défaut,défaut', + 'map0:OPACITIES': '204,255,255', + 'map0:HIGHLIGHT_GEOM': /CURVEPOLYGON\(CIRCULARSTRING\(\n +433697.\d+ 5404736.\d+,\n +437978.\d+ 5409017.\d+,\n +442259.\d+ 5404736.\d+,\n +437978.\d+ 5400455.\d+,\n +433697.\d+ 5404736.\d+\)\)/, + 'map0:HIGHLIGHT_SYMBOL': ` + + + + + + + #ff0000 + 1 + 2 + + + #ff0000 + 0.2 + + + + + + `, + 'simple_label': 'simple label', + // Disabled because of the migration when project is saved with QGIS >= 3.32 + // 'multiline_label': 'Multiline label', + }) + getPrintParams = await expectParametersToContain('Print requests 3', getPrintRequest.postData() ?? '', expectedParameters3) + await expect(getPrintParams.size).toBe(17) }); }); From 93251d29ccb53a500a3e68a44e4cad1fffe5932f Mon Sep 17 00:00:00 2001 From: rldhont Date: Mon, 27 Jan 2025 11:23:15 +0100 Subject: [PATCH 12/12] Tests e2e playwright Print - using expectParametersToContain in print requests base layers --- tests/end2end/playwright/print.spec.js | 112 +++++++++++-------------- 1 file changed, 49 insertions(+), 63 deletions(-) diff --git a/tests/end2end/playwright/print.spec.js b/tests/end2end/playwright/print.spec.js index 889c986d3e..2e8ccd575f 100644 --- a/tests/end2end/playwright/print.spec.js +++ b/tests/end2end/playwright/print.spec.js @@ -630,6 +630,19 @@ test.describe('Print base layers', () => { }); test('Print requests', async ({ page }) => { + // Required GetPrint parameters + const expectedParameters = { + 'SERVICE': 'WMS', + 'REQUEST': 'GetPrint', + 'VERSION': '1.3.0', + 'FORMAT': 'pdf', + 'TRANSPARENT': 'true', + 'CRS': 'EPSG:3857', + 'DPI': '100', + 'TEMPLATE': 'simple', + 'map0:EXTENT': /420548.\d+,5397710.\d+,441999.\d+,5412877.\d+/, + 'map0:SCALE': '72224', + } // Print osm-mapnik let getPrintRequestPromise = page.waitForRequest(request => request.method() === 'POST' && request.postData()?.includes('GetPrint') === true); @@ -642,24 +655,18 @@ test.describe('Print base layers', () => { // check request let getPrintRequest = await getPrintRequestPromise; - let getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(getPrintPostData).toContain('map0%3AEXTENT=') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=osm-mapnik&') - expect(getPrintPostData).toContain('map0%3ASTYLES=d%C3%A9faut&') - expect(getPrintPostData).toContain('map0%3AOPACITIES=255') + // Extend GetPrint parameters + const expectedParameters1 = Object.assign({}, expectedParameters, { + 'map0:LAYERS': 'osm-mapnik', + 'map0:STYLES': 'défaut', + 'map0:OPACITIES': '255', + }) + let getPrintParams = await expectParametersToContain('Print requests 1', getPrintRequest.postData() ?? '', expectedParameters1) + await expect(getPrintParams.size).toBe(13) let getPrintResponse = await getPrintRequest.response(); await expect(getPrintResponse?.status()).toBe(200) - expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); + await expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print osm-mapnik & quartiers let getMapRequestPromise = page.waitForRequest(/REQUEST=GetMap/); @@ -678,25 +685,18 @@ test.describe('Print base layers', () => { // check request getPrintRequest = await getPrintRequestPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).not.toBeNull() - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(getPrintPostData).toContain('map0%3AEXTENT=') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=osm-mapnik%2Cquartiers&') - expect(getPrintPostData).toContain('map0%3ASTYLES=d%C3%A9faut%2Cdefault&') - expect(getPrintPostData).toContain('map0%3AOPACITIES=255%2C255') + // Extend and update GetPrint parameters + const expectedParameters2 = Object.assign({}, expectedParameters, { + 'map0:LAYERS': 'osm-mapnik,quartiers', + 'map0:STYLES': 'défaut,default', + 'map0:OPACITIES': '255,255', + }) + getPrintParams = await expectParametersToContain('Print requests 2', getPrintRequest.postData() ?? '', expectedParameters2) + await expect(getPrintParams.size).toBe(13) getPrintResponse = await getPrintRequest.response(); await expect(getPrintResponse?.status()).toBe(200) - expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); + await expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print quartiers not open-topo-map await page.locator('#switcher-baselayer').getByRole('combobox').selectOption('open-topo-map'); @@ -714,25 +714,18 @@ test.describe('Print base layers', () => { // check request getPrintRequest = await getPrintRequestPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).not.toBeNull() - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(getPrintPostData).toContain('map0%3AEXTENT=') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=quartiers&') - expect(getPrintPostData).toContain('map0%3ASTYLES=default&') - expect(getPrintPostData).toContain('map0%3AOPACITIES=255') + // Extend and update GetPrint parameters + const expectedParameters3 = Object.assign({}, expectedParameters, { + 'map0:LAYERS': 'quartiers', + 'map0:STYLES': 'default', + 'map0:OPACITIES': '255', + }) + getPrintParams = await expectParametersToContain('Print requests 3', getPrintRequest.postData() ?? '', expectedParameters3) + await expect(getPrintParams.size).toBe(13) getPrintResponse = await getPrintRequest.response(); await expect(getPrintResponse?.status()).toBe(200) - expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); + await expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); // Print quartiers_baselayer & quartiers await page.locator('#switcher-baselayer').getByRole('combobox').selectOption('quartiers_baselayer'); @@ -750,25 +743,18 @@ test.describe('Print base layers', () => { // check request getPrintRequest = await getPrintRequestPromise; - getPrintPostData = getPrintRequest.postData(); - expect(getPrintPostData).not.toBeNull() - expect(getPrintPostData).toContain('SERVICE=WMS') - expect(getPrintPostData).toContain('REQUEST=GetPrint') - expect(getPrintPostData).toContain('VERSION=1.3.0') - expect(getPrintPostData).toContain('FORMAT=pdf') - expect(getPrintPostData).toContain('TRANSPARENT=true') - expect(getPrintPostData).toContain('CRS=EPSG%3A3857') - expect(getPrintPostData).toContain('DPI=100') - expect(getPrintPostData).toContain('TEMPLATE=simple') - //expect(getPrintPostData).toContain('map0%3AEXTENT=') - expect(getPrintPostData).toContain('map0%3ASCALE=72224') - expect(getPrintPostData).toContain('map0%3ALAYERS=quartiers_baselayer%2Cquartiers&') - expect(getPrintPostData).toContain('map0%3ASTYLES=default%2Cdefault&') - expect(getPrintPostData).toContain('map0%3AOPACITIES=255%2C255') + // Extend and update GetPrint parameters + const expectedParameters4 = Object.assign({}, expectedParameters, { + 'map0:LAYERS': 'quartiers_baselayer,quartiers', + 'map0:STYLES': 'default,default', + 'map0:OPACITIES': '255,255', + }) + getPrintParams = await expectParametersToContain('Print requests 4', getPrintRequest.postData() ?? '', expectedParameters4) + await expect(getPrintParams.size).toBe(13) getPrintResponse = await getPrintRequest.response(); await expect(getPrintResponse?.status()).toBe(200) - expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); + await expect(getPrintResponse?.headers()['content-type']).toBe('application/pdf'); }); });