Compare commits

...

3 Commits

7 changed files with 42 additions and 24 deletions

View File

@ -228,18 +228,14 @@ async function _isInEditMode(page, identifier) {
/** /**
* Set the time conductor mode to either fixed timespan or realtime mode. * Set the time conductor mode to either fixed timespan or realtime mode.
* @param {import('@playwright/test').Page} page * @param {import('@playwright/test').Page} page
* @param {boolean} [isFixedTimespan=true] true for fixed timespan mode, false for realtime mode; default is true * @param {'fixed'|'local-clock'|'remote-clock'} [clockType='fixed'] the clock type to set the time conductor to. default: 'fixed'
*/ */
async function setTimeConductorMode(page, isFixedTimespan = true) { async function setTimeConductorMode(page, clockType = 'fixed') {
// Click 'mode' button // Click 'mode' button
await page.locator('.c-mode-button').click(); await page.locator('.c-mode-button').click();
// Switch time conductor mode // Switch time conductor mode
if (isFixedTimespan) { await page.locator(`data-testid=conductor-modeOption-${clockType}`).click();
await page.locator('data-testid=conductor-modeOption-fixed').click();
} else {
await page.locator('data-testid=conductor-modeOption-realtime').click();
}
} }
/** /**
@ -247,15 +243,23 @@ async function setTimeConductorMode(page, isFixedTimespan = true) {
* @param {import('@playwright/test').Page} page * @param {import('@playwright/test').Page} page
*/ */
async function setFixedTimeMode(page) { async function setFixedTimeMode(page) {
await setTimeConductorMode(page, true); await setTimeConductorMode(page);
} }
/** /**
* Set the time conductor to realtime mode * Set the time conductor to local clock mode
* @param {import('@playwright/test').Page} page * @param {import('@playwright/test').Page} page
*/ */
async function setRealTimeMode(page) { async function setLocalClockMode(page) {
await setTimeConductorMode(page, false); await setTimeConductorMode(page, 'local-clock');
}
/**
* Set the time conductor to remote clock mode
* @param {import('@playwright/test').Page} page
*/
async function setRemoteClockMode(page) {
await setTimeConductorMode(page, 'remote-clock');
} }
/** /**
@ -318,7 +322,8 @@ module.exports = {
getHashUrlToDomainObject, getHashUrlToDomainObject,
getFocusedObjectUuid, getFocusedObjectUuid,
setFixedTimeMode, setFixedTimeMode,
setRealTimeMode, setLocalClockMode,
setRemoteClockMode,
setStartOffset, setStartOffset,
setEndOffset setEndOffset
}; };

View File

@ -22,10 +22,19 @@
// FIXME: Remove this eslint exception once tests are implemented // FIXME: Remove this eslint exception once tests are implemented
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
const { setRemoteClockMode } = require('../../../../appActions');
const { test, expect } = require('../../../../baseFixtures'); const { test, expect } = require('../../../../baseFixtures');
// const path = require('path');
test.describe('Remote Clock', () => { test.describe('Remote Clock', () => {
// eslint-disable-next-line require-await // test.use({ storageState: path.join(__dirname, '../../../../test-data/RemoteClockTestData_storage.json')});
// eslint-disable-next-line no-undef
test.beforeEach(async ({ page }) => {
// eslint-disable-next-line no-undef
// await page.addInitScript({ path: path.join(__dirname, '../../../../helper/', 'addInitRemoteClock.js') });
await page.goto('./', { waitUntil: 'networkidle' });
});
test.fixme('blocks historical requests until first tick is received', async ({ page }) => { test.fixme('blocks historical requests until first tick is received', async ({ page }) => {
test.info().annotations.push({ test.info().annotations.push({
type: 'issue', type: 'issue',
@ -33,7 +42,11 @@ test.describe('Remote Clock', () => {
}); });
// addInitScript to with remote clock // addInitScript to with remote clock
// Switch time conductor mode to 'remote clock' // Switch time conductor mode to 'remote clock'
await setRemoteClockMode(page);
// Navigate to telemetry // Navigate to telemetry
await page.click('role=treeitem[name=/Remote Clock Ticker/]');
await page.reload();
// Verify that the plot renders historical data within the correct bounds // Verify that the plot renders historical data within the correct bounds
// Refresh the page // Refresh the page
// Verify again that the plot renders historical data within the correct bounds // Verify again that the plot renders historical data within the correct bounds

View File

@ -21,13 +21,13 @@
*****************************************************************************/ *****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures'); const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults, setStartOffset, setFixedTimeMode, setRealTimeMode } = require('../../../../appActions'); const { createDomainObjectWithDefaults, setStartOffset, setFixedTimeMode, setLocalClockMode } = require('../../../../appActions');
test.describe('Testing Display Layout @unstable', () => { test.describe('Testing Display Layout @unstable', () => {
let sineWaveObject; let sineWaveObject;
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ page }) => {
await page.goto('./', { waitUntil: 'networkidle' }); await page.goto('./', { waitUntil: 'networkidle' });
await setRealTimeMode(page); await setLocalClockMode(page);
// Create Sine Wave Generator // Create Sine Wave Generator
sineWaveObject = await createDomainObjectWithDefaults(page, { sineWaveObject = await createDomainObjectWithDefaults(page, {

View File

@ -160,7 +160,7 @@ test.describe('Example Imagery Object', () => {
await page.locator('.c-mode-button').click(); await page.locator('.c-mode-button').click();
// Click local clock // Click local clock
await page.locator('[data-testid="conductor-modeOption-realtime"]').click(); await page.locator('[data-testid="conductor-modeOption-local-clock"]').click();
await expect.soft(pausePlayButton).not.toHaveClass(/is-paused/); await expect.soft(pausePlayButton).not.toHaveClass(/is-paused/);
// Zoom in via button // Zoom in via button
@ -412,7 +412,7 @@ async function performImageryViewOperationsAndAssert(page) {
await page.locator('.c-mode-button').click(); await page.locator('.c-mode-button').click();
// Select local clock mode // Select local clock mode
await page.locator('[data-testid=conductor-modeOption-realtime]').click(); await page.locator('[data-testid=conductor-modeOption-local-clock]').click();
// Zoom in on next image // Zoom in on next image
await mouseZoomOnImageAndAssert(page, 2); await mouseZoomOnImageAndAssert(page, 2);

View File

@ -21,13 +21,13 @@
*****************************************************************************/ *****************************************************************************/
const { test, expect } = require('../../../../pluginFixtures'); const { test, expect } = require('../../../../pluginFixtures');
const { createDomainObjectWithDefaults, setStartOffset, setFixedTimeMode, setRealTimeMode } = require('../../../../appActions'); const { createDomainObjectWithDefaults, setStartOffset, setFixedTimeMode, setLocalClockMode } = require('../../../../appActions');
test.describe('Testing LAD table @unstable', () => { test.describe('Testing LAD table @unstable', () => {
let sineWaveObject; let sineWaveObject;
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ page }) => {
await page.goto('./', { waitUntil: 'networkidle' }); await page.goto('./', { waitUntil: 'networkidle' });
await setRealTimeMode(page); await setLocalClockMode(page);
// Create Sine Wave Generator // Create Sine Wave Generator
sineWaveObject = await createDomainObjectWithDefaults(page, { sineWaveObject = await createDomainObjectWithDefaults(page, {

View File

@ -21,7 +21,7 @@
*****************************************************************************/ *****************************************************************************/
const { test, expect } = require('../../../../baseFixtures'); const { test, expect } = require('../../../../baseFixtures');
const { setFixedTimeMode, setRealTimeMode, setStartOffset, setEndOffset } = require('../../../../appActions'); const { setFixedTimeMode, setLocalClockMode, setStartOffset, setEndOffset } = require('../../../../appActions');
test.describe('Time conductor operations', () => { test.describe('Time conductor operations', () => {
test('validate start time does not exceeds end time', async ({ page }) => { test('validate start time does not exceeds end time', async ({ page }) => {
@ -85,7 +85,7 @@ test.describe('Time conductor input fields real-time mode', () => {
await page.goto('./', { waitUntil: 'networkidle' }); await page.goto('./', { waitUntil: 'networkidle' });
// Switch to real-time mode // Switch to real-time mode
await setRealTimeMode(page); await setLocalClockMode(page);
// Set start time offset // Set start time offset
await setStartOffset(page, startOffset); await setStartOffset(page, startOffset);
@ -122,7 +122,7 @@ test.describe('Time conductor input fields real-time mode', () => {
await page.goto('./', { waitUntil: 'networkidle' }); await page.goto('./', { waitUntil: 'networkidle' });
// Switch to real-time mode // Switch to real-time mode
await setRealTimeMode(page); await setLocalClockMode(page);
// Set start time offset // Set start time offset
await setStartOffset(page, startOffset); await setStartOffset(page, startOffset);
@ -134,7 +134,7 @@ test.describe('Time conductor input fields real-time mode', () => {
await setFixedTimeMode(page); await setFixedTimeMode(page);
// Switch back to real-time mode // Switch back to real-time mode
await setRealTimeMode(page); await setLocalClockMode(page);
// Verify updated start time offset persists after mode switch // Verify updated start time offset persists after mode switch
await expect(page.locator('data-testid=conductor-start-offset-button')).toContainText('00:30:23'); await expect(page.locator('data-testid=conductor-start-offset-button')).toContainText('00:30:23');

View File

@ -117,7 +117,7 @@ export default {
description: "Monitor streaming data in real-time. The Time " description: "Monitor streaming data in real-time. The Time "
+ "Conductor and displays will automatically advance themselves based on this clock. " + clock.description, + "Conductor and displays will automatically advance themselves based on this clock. " + clock.description,
cssClass: clock.cssClass || 'icon-clock', cssClass: clock.cssClass || 'icon-clock',
testId: 'conductor-modeOption-realtime', testId: `conductor-modeOption-${clock.name.toLowerCase().replace(' ', '-')}`,
onItemClicked: () => this.setOption(key) onItemClicked: () => this.setOption(key)
}; };
} }