From dc0f461d9f6e891b11d3a5d8174c3c9325a66512 Mon Sep 17 00:00:00 2001 From: Jesse Mazzella Date: Thu, 20 Jul 2023 14:37:04 -0700 Subject: [PATCH] test(e2e): fix ITC imagery test --- .../imagery/exampleImagery.e2e.spec.js | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js b/e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js index 390232129d..08ce2f2a62 100644 --- a/e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js +++ b/e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js @@ -27,7 +27,7 @@ but only assume that example imagery is present. /* globals process */ const { waitForAnimations } = require('../../../../baseFixtures'); const { test, expect } = require('../../../../pluginFixtures'); -const { createDomainObjectWithDefaults } = require('../../../../appActions'); +const { createDomainObjectWithDefaults, setRealTimeMode } = require('../../../../appActions'); const backgroundImageSelector = '.c-imagery__main-image__background-image'; const panHotkey = process.platform === 'linux' ? ['Shift', 'Alt'] : ['Alt']; const tagHotkey = ['Shift', 'Alt']; @@ -49,6 +49,7 @@ test.describe('Example Imagery Object', () => { }); test('Can use Mouse Wheel to zoom in and out of latest image', async ({ page }) => { + page.waitForResponse('') // Zoom in x2 and assert await mouseZoomOnImageAndAssert(page, 2); @@ -70,7 +71,7 @@ test.describe('Example Imagery Object', () => { await dragContrastSliderAndAssertFilterValues(page); }); - test.fixme('Can use independent time conductor to change time', async ({ page }) => { + test('Can use independent time conductor to change time', async ({ page }) => { test.info().annotations.push({ type: 'issue', description: 'https://github.com/nasa/openmct/issues/6821' @@ -79,10 +80,18 @@ test.describe('Example Imagery Object', () => { // flip on independent time conductor await page.getByRole('switch', { name: 'Enable Independent Time Conductor' }).click(); await page.getByRole('button', { name: 'Independent Time Conductor Settings' }).click(); + await page.getByRole('textbox', { name: 'Start date' }).click(); + await page.getByRole('textbox', { name: 'Start date' }).fill(''); await page.getByRole('textbox', { name: 'Start date' }).fill('2021-12-30'); - await page.getByRole('textbox', { name: 'Start time' }).fill('01:01:00.000Z'); + await page.getByRole('textbox', { name: 'Start time' }).click(); + await page.getByRole('textbox', { name: 'Start time' }).fill(''); + await page.getByRole('textbox', { name: 'Start time' }).fill('01:01:00'); + await page.getByRole('textbox', { name: 'End date' }).click(); + await page.getByRole('textbox', { name: 'End date' }).fill(''); await page.getByRole('textbox', { name: 'End date' }).fill('2021-12-30'); - await page.getByRole('textbox', { name: 'End time' }).fill('01:11:00.000Z'); + await page.getByRole('textbox', { name: 'End time' }).click(); + await page.getByRole('textbox', { name: 'End time' }).fill(''); + await page.getByRole('textbox', { name: 'End time' }).fill('01:11:00'); await page.getByRole('button', { name: 'Submit time bounds' }).click(); // check image date @@ -94,30 +103,31 @@ test.describe('Example Imagery Object', () => { await expect(page.getByText('2021-12-30 01:11:00.000Z')).toBeHidden(); // Test independent fixed time with global realtime - await page.getByRole('button', { name: /Fixed Timespan/ }).click(); - await page.getByRole('menuitem', { name: /Real-Time/ }).click(); - await page.getByTitle('Enable independent Time Conductor').locator('label').click(); + await setRealTimeMode(page); + await page.getByRole('switch', { name: 'Enable Independent Time Conductor' }).click(); // check image date to be in the past await expect(page.getByText('2021-12-30 01:11:00.000Z').first()).toBeVisible(); // flip it off - await page.getByTitle('Disable independent Time Conductor').locator('label').click(); + await page.getByRole('switch', { name: 'Disable Independent Time Conductor' }).click(); // timestamp shouldn't be in the past anymore await expect(page.getByText('2021-12-30 01:11:00.000Z')).toBeHidden(); - + // Test independent realtime with global realtime - await page.getByTitle('Enable independent Time Conductor').locator('label').click(); + await page.getByRole('switch', { name: 'Enable Independent Time Conductor' }).click(); // check image date await expect(page.getByText('2021-12-30 01:11:00.000Z').first()).toBeVisible(); // change independent time to realtime - await page.getByRole('button', { name: /Fixed Timespan/ }).click(); - await page.getByRole('menuitem', { name: /Local Clock/ }).click(); + await page.getByRole('button', { name: 'Independent Time Conductor Settings' }).click(); + await page.getByRole('button', { name: "Independent Time Conductor Mode Menu" }).click(); + await page.getByRole('menuitem', { name: /Real-Time/ }).click(); // timestamp shouldn't be in the past anymore await expect(page.getByText('2021-12-30 01:11:00.000Z')).toBeHidden(); // back to the past + await page.getByRole('button', { name: "Independent Time Conductor Mode Menu" }).click(); await page - .getByRole('button', { name: /Local Clock/ }) - .first() - .click(); + .getByRole('menuitem', { name: /Real-Time/ }) + .click(); + await page.getByRole('button', { name: "Independent Time Conductor Mode Menu" }).click(); await page.getByRole('menuitem', { name: /Fixed Timespan/ }).click(); // check image date to be in the past await expect(page.getByText('2021-12-30 01:11:00.000Z').first()).toBeVisible(); @@ -254,7 +264,7 @@ test.describe('Example Imagery Object', () => { test('Uses low fetch priority', async ({ page }) => { const priority = await page.locator('.js-imageryView-image').getAttribute('fetchpriority'); - await expect(priority).toBe('low'); + expect(priority).toBe('low'); }); }); @@ -288,7 +298,7 @@ test.describe('Example Imagery in Display Layout', () => { await setRealTimeMode(page); // pause/play button - const pausePlayButton = await page.locator('.c-button.pause-play'); + const pausePlayButton = page.locator('.c-button.pause-play'); await expect.soft(pausePlayButton).not.toHaveClass(/is-paused/); @@ -311,7 +321,7 @@ test.describe('Example Imagery in Display Layout', () => { await setRealTimeMode(page); // pause/play button - const pausePlayButton = await page.locator('.c-button.pause-play'); + const pausePlayButton = page.locator('.c-button.pause-play'); await pausePlayButton.click(); await expect.soft(pausePlayButton).toHaveClass(/is-paused/); @@ -935,15 +945,3 @@ async function createImageryView(page) { page.waitForSelector('.c-message-banner__message') ]); } - -/** - * @param {import('@playwright/test').Page} page - */ -async function setRealTimeMode(page) { - await page.locator('.c-compact-tc').click(); - await page.waitForSelector('.c-tc-input-popup', { state: 'visible' }); - // Click mode dropdown - await page.getByRole('button', { name: ' Fixed Timespan ' }).click(); - // Click realtime - await page.getByRole('menuitem', { name: /Real-Time/ }).click(); -}