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.
* @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
await page.locator('.c-mode-button').click();
// Switch time conductor mode
if (isFixedTimespan) {
await page.locator('data-testid=conductor-modeOption-fixed').click();
} else {
await page.locator('data-testid=conductor-modeOption-realtime').click();
}
await page.locator(`data-testid=conductor-modeOption-${clockType}`).click();
}
/**
@ -247,15 +243,23 @@ async function setTimeConductorMode(page, isFixedTimespan = true) {
* @param {import('@playwright/test').Page} 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
*/
async function setRealTimeMode(page) {
await setTimeConductorMode(page, false);
async function setLocalClockMode(page) {
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,
getFocusedObjectUuid,
setFixedTimeMode,
setRealTimeMode,
setLocalClockMode,
setRemoteClockMode,
setStartOffset,
setEndOffset
};

View File

@ -22,10 +22,19 @@
// FIXME: Remove this eslint exception once tests are implemented
// eslint-disable-next-line no-unused-vars
const { setRemoteClockMode } = require('../../../../appActions');
const { test, expect } = require('../../../../baseFixtures');
// const path = require('path');
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.info().annotations.push({
type: 'issue',
@ -33,7 +42,11 @@ test.describe('Remote Clock', () => {
});
// addInitScript to with remote clock
// Switch time conductor mode to 'remote clock'
await setRemoteClockMode(page);
// 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
// Refresh the page
// Verify again that the plot renders historical data within the correct bounds

View File

@ -21,13 +21,13 @@
*****************************************************************************/
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', () => {
let sineWaveObject;
test.beforeEach(async ({ page }) => {
await page.goto('./', { waitUntil: 'networkidle' });
await setRealTimeMode(page);
await setLocalClockMode(page);
// Create Sine Wave Generator
sineWaveObject = await createDomainObjectWithDefaults(page, {

View File

@ -160,7 +160,7 @@ test.describe('Example Imagery Object', () => {
await page.locator('.c-mode-button').click();
// 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/);
// Zoom in via button
@ -412,7 +412,7 @@ async function performImageryViewOperationsAndAssert(page) {
await page.locator('.c-mode-button').click();
// 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
await mouseZoomOnImageAndAssert(page, 2);

View File

@ -21,13 +21,13 @@
*****************************************************************************/
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', () => {
let sineWaveObject;
test.beforeEach(async ({ page }) => {
await page.goto('./', { waitUntil: 'networkidle' });
await setRealTimeMode(page);
await setLocalClockMode(page);
// Create Sine Wave Generator
sineWaveObject = await createDomainObjectWithDefaults(page, {

View File

@ -21,7 +21,7 @@
*****************************************************************************/
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('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' });
// Switch to real-time mode
await setRealTimeMode(page);
await setLocalClockMode(page);
// Set start time offset
await setStartOffset(page, startOffset);
@ -122,7 +122,7 @@ test.describe('Time conductor input fields real-time mode', () => {
await page.goto('./', { waitUntil: 'networkidle' });
// Switch to real-time mode
await setRealTimeMode(page);
await setLocalClockMode(page);
// Set start time offset
await setStartOffset(page, startOffset);
@ -134,7 +134,7 @@ test.describe('Time conductor input fields real-time mode', () => {
await setFixedTimeMode(page);
// Switch back to real-time mode
await setRealTimeMode(page);
await setLocalClockMode(page);
// Verify updated start time offset persists after mode switch
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 "
+ "Conductor and displays will automatically advance themselves based on this clock. " + clock.description,
cssClass: clock.cssClass || 'icon-clock',
testId: 'conductor-modeOption-realtime',
testId: `conductor-modeOption-${clock.name.toLowerCase().replace(' ', '-')}`,
onItemClicked: () => this.setOption(key)
};
}