2024-01-04 01:11:35 +00:00
|
|
|
/*****************************************************************************
|
2024-01-09 21:31:51 +00:00
|
|
|
* Open MCT, Copyright (c) 2014-2024, United States Government
|
2024-01-04 01:11:35 +00:00
|
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
|
|
* Administration. All rights reserved.
|
|
|
|
*
|
|
|
|
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
|
|
|
* "License"); you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
|
* License for the specific language governing permissions and limitations
|
|
|
|
* under the License.
|
|
|
|
*
|
|
|
|
* Open MCT includes source code licensed under additional open source
|
|
|
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
|
|
* this source code distribution or the Licensing information page available
|
|
|
|
* at runtime from the About dialog for additional information.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
import { expect } from '../pluginFixtures.js';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Converts a hex color value to its RGB equivalent.
|
|
|
|
*
|
|
|
|
* @param {string} hex - The hex color value. i.e. '#5b0f00'
|
|
|
|
* @returns {string} The RGB equivalent of the hex color.
|
|
|
|
*/
|
|
|
|
function hexToRGB(hex) {
|
|
|
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
|
|
return result
|
|
|
|
? `rgb(${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)})`
|
|
|
|
: null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the background and text color of a given element.
|
|
|
|
*
|
|
|
|
* @param {import('@playwright/test').Page} page - The Playwright page object.
|
|
|
|
* @param {string} borderColorHex - The hex value of the border color to set, or 'No Style'.
|
|
|
|
* @param {string} backgroundColorHex - The hex value of the background color to set, or 'No Style'.
|
|
|
|
* @param {string} textColorHex - The hex value of the text color to set, or 'No Style'.
|
|
|
|
* @param {import('@playwright/test').Locator} locator - The Playwright locator for the element whose style is to be set.
|
|
|
|
*/
|
|
|
|
async function setStyles(page, borderColorHex, backgroundColorHex, textColorHex, locator) {
|
|
|
|
await locator.click(); // Assuming the locator is clickable and opens the style setting UI
|
|
|
|
await page.getByLabel('Set border color').click();
|
|
|
|
await page.getByLabel(borderColorHex).click();
|
|
|
|
await page.getByLabel('Set background color').click();
|
|
|
|
await page.getByLabel(backgroundColorHex).click();
|
|
|
|
await page.getByLabel('Set text color').click();
|
|
|
|
await page.getByLabel(textColorHex).click();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if the styles of an element match the expected values.
|
|
|
|
*
|
|
|
|
* @param {string} expectedBorderColor - The expected border color in RGB format. Default is '#e6b8af' or 'rgb(230, 184, 175)'
|
|
|
|
* @param {string} expectedBackgroundColor - The expected background color in RGB format.
|
|
|
|
* @param {string} expectedTextColor - The expected text color in RGB format. Default is #aaaaaa or 'rgb(170, 170, 170)'
|
|
|
|
* @param {import('@playwright/test').Locator} locator - The Playwright locator for the element whose style is to be checked.
|
|
|
|
*/
|
|
|
|
async function checkStyles(
|
|
|
|
expectedBorderColor,
|
|
|
|
expectedBackgroundColor,
|
|
|
|
expectedTextColor,
|
|
|
|
locator
|
|
|
|
) {
|
|
|
|
const layoutStyles = await locator.evaluate((el) => {
|
|
|
|
return {
|
|
|
|
border: window.getComputedStyle(el).getPropertyValue('border-top-color'), //infer the left, right, and bottom
|
|
|
|
background: window.getComputedStyle(el).getPropertyValue('background-color'),
|
|
|
|
fontColor: window.getComputedStyle(el).getPropertyValue('color')
|
|
|
|
};
|
|
|
|
});
|
|
|
|
expect(layoutStyles.border).toContain(expectedBorderColor);
|
|
|
|
expect(layoutStyles.background).toContain(expectedBackgroundColor);
|
|
|
|
expect(layoutStyles.fontColor).toContain(expectedTextColor);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if the font Styles of an element match the expected values.
|
|
|
|
*
|
|
|
|
* @param {string} expectedFontSize - The expected font size in '72px' format. Default is 'Default'
|
|
|
|
* @param {string} expectedFontWeight - The expected font Type. Format as '700' for bold. Default is 'Default'
|
|
|
|
* @param {string} expectedFontFamily - The expected font Type. Format as "\"Andale Mono\", sans-serif". Default is 'Default'
|
|
|
|
* @param {import('@playwright/test').Locator} locator - The Playwright locator for the element whose style is to be checked.
|
|
|
|
*/
|
|
|
|
async function checkFontStyles(expectedFontSize, expectedFontWeight, expectedFontFamily, locator) {
|
|
|
|
const layoutStyles = await locator.evaluate((el) => {
|
|
|
|
return {
|
|
|
|
fontSize: window.getComputedStyle(el).getPropertyValue('font-size'),
|
|
|
|
fontWeight: window.getComputedStyle(el).getPropertyValue('font-weight'),
|
|
|
|
fontFamily: window.getComputedStyle(el).getPropertyValue('font-family')
|
|
|
|
};
|
|
|
|
});
|
|
|
|
expect(layoutStyles.fontSize).toContain(expectedFontSize);
|
|
|
|
expect(layoutStyles.fontWeight).toContain(expectedFontWeight);
|
|
|
|
expect(layoutStyles.fontFamily).toContain(expectedFontFamily);
|
|
|
|
}
|
|
|
|
|
|
|
|
export { checkFontStyles, checkStyles, hexToRGB, setStyles };
|