Skip to content

Commit

Permalink
Fix failing tests caused by cleanse of database (#107)
Browse files Browse the repository at this point in the history
* Print package versions being used by build server

* fix E2E tests

* create shared file containing standard attributes

* all a11y and e2e tests should now be passing, and fewer auto test failing

* Simplified search functional tests should now be fixed

* use Product Type tag AVCS value where possible

* reinstate filesize filter bytes check

* Rename ExpectAllResultsContainOneBatchUserAttValue to ExpectAllResultsContainAnyBatchUserAttValue

* Added GetDisplayedBatchCount() method and removed return values from Expect methods

* Change return types to Promise<void>. Reinstate deleted waitForSelector(). Change name of new method to GetCountOfBatchRows() to better describe what it does

* Inlined single use consts
  • Loading branch information
crdandoukho authored Mar 7, 2022
1 parent 0163869 commit 96fd31a
Show file tree
Hide file tree
Showing 11 changed files with 252 additions and 247 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { chromium, Browser, Page } from 'playwright'
import { injectAxe, checkA11y} from 'axe-playwright'
import { AcceptCookies } from '../FunctionalTests/helpermethod';
const { autoTestConfig } = require('../FunctionalTests/appSetting.json');
const{pageTimeOut, pageObjectsConfig} =require('../FunctionalTests/pageObjects.json');
const{ pageTimeOut } = require('../FunctionalTests/pageObjects.json');

let browser: Browser
let page: Page
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { chromium,Browser, Page } from 'playwright'
import { injectAxe,checkA11y } from 'axe-playwright'
const { autoTestConfig } = require('../FunctionalTests/appSetting.json');
const { pageObjectsConfig, pageTimeOut } = require('../FunctionalTests/pageObjects.json');
import { LoginPortal, SearchAttribute, ClickWaitRetry, AcceptCookies } from '../FunctionalTests/helpermethod'
import {batchAttributeProductContains} from '../FunctionalTests/helperconstant'
import { LoginPortal, SearchAttribute, ClickWaitRetry, AcceptCookies } from '../FunctionalTests/helpermethod';
import {attributeProductType} from '../FunctionalTests/helperconstant';

let browser: Browser
let page: Page
Expand All @@ -20,9 +20,9 @@ describe('FSS UI Search Page Accessibility Test Scenarios', () => {
await page.waitForSelector(pageObjectsConfig.searchPageContainerHeaderSelector);

page.setDefaultTimeout(pageTimeOut.timeOutInMilliSeconds);
await SearchAttribute(page,"productid");
await page.selectOption(pageObjectsConfig.operatorDropDownSelector,"contains");
await page.fill(pageObjectsConfig.inputSearchValueSelector,batchAttributeProductContains);
await SearchAttribute(page, attributeProductType.key);
await page.selectOption(pageObjectsConfig.operatorDropDownSelector,"contains");
await page.fill(pageObjectsConfig.inputSearchValueSelector, attributeProductType.value);

await ClickWaitRetry(page, pageObjectsConfig.searchAttributeButton, pageObjectsConfig.searchAttributeTable);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import { chromium, Browser, Page } from 'playwright'
import { injectAxe,checkA11y } from 'axe-playwright'
const { autoTestConfig } = require('../FunctionalTests/appSetting.json');
const { pageObjectsConfig, pageTimeOut } = require('../FunctionalTests/pageObjects.json');
import { AcceptCookies, LoginPortal} from '../FunctionalTests/helpermethod'
import { AcceptCookies, LoginPortal} from '../FunctionalTests/helpermethod';
import { attributeProductType } from '../FunctionalTests/helperconstant';

let browser: Browser
let page: Page
let browser: Browser;
let page: Page;

describe('FSS UI Simplified Search Page Accessibility Test Scenarios', () => {
jest.setTimeout(pageTimeOut.timeOutInMilliSeconds);
Expand Down Expand Up @@ -57,7 +58,7 @@ describe('FSS UI Simplified Search Page Accessibility Test Scenarios', () => {
})

test('check a11y for simplified search result html and axe run options', async () => {
await page.fill(pageObjectsConfig.inputSimplifiedSearchBoxSelector,"tes");
await page.fill(pageObjectsConfig.inputSimplifiedSearchBoxSelector, attributeProductType.value);
await page.click(pageObjectsConfig.simplifiedSearchButtonSelector);
await page.waitForSelector(pageObjectsConfig.searchResultTableSelector);
await injectAxe(page);
Expand Down
61 changes: 28 additions & 33 deletions Tests/E2ETests/fss-e2e-tests.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { chromium, Browser, BrowserContext, Page } from 'playwright'
import { chromium, Browser, BrowserContext, Page } from 'playwright';
const { autoTestConfig } = require('../FunctionalTests/appSetting.json');
const { pageObjectsConfig, pageTimeOut } = require('../FunctionalTests/pageObjects.json');
import { LoginPortal, SearchAttribute, ClickWaitRetry, AcceptCookies } from '../FunctionalTests/helpermethod'
import { businessUnitValue, fileSizeValue, batchAttributeProduct } from './helperattributevalues'
import { GetApiDetails } from './apiRequest'
import { LoginPortal, SearchAttribute, ClickWaitRetry, AcceptCookies,
ExpectAllResultsHaveBatchUserAttValue} from '../FunctionalTests/helpermethod';
import { attributeFileSize, attributeBusinessUnit, attributeProductType } from '../FunctionalTests/helperconstant';
import { GetApiDetails } from './apiRequest';

describe('FSS UI E2E Scenarios', () => {
jest.setTimeout(pageTimeOut.timeOutInMilliSeconds);
Expand All @@ -12,76 +13,70 @@ describe('FSS UI E2E Scenarios', () => {
let page: Page;

beforeAll(async () => {
browser = await chromium.launch({slowMo: 100});
browser = await chromium.launch({slowMo: 100});
})

beforeEach(async () => {
beforeEach(async () => {
context = await browser.newContext();
page = await context.newPage();
await page.goto(autoTestConfig.url);
await AcceptCookies(page);
await LoginPortal(page, autoTestConfig.user, autoTestConfig.password, pageObjectsConfig.loginSignInLinkSelector);

await page.waitForSelector(pageObjectsConfig.searchPageContainerHeaderSelector);
expect(await page.innerHTML(pageObjectsConfig.searchPageContainerHeaderSelector)).toEqual(pageObjectsConfig.searchPageContainerHeaderText);
expect(await page.innerHTML(pageObjectsConfig.searchPageContainerHeaderSelector))
.toEqual(pageObjectsConfig.searchPageContainerHeaderText);
})

afterEach(async () => {
await page.close();
await context.close();
await context.close();
})
afterAll(async () => {
afterAll(async () => {
await browser.close();
})

it('Valid search system attributes query to verify data returns on UI and API response status 200', async () => {
page.setDefaultTimeout(pageTimeOut.timeOutInMilliSeconds);
await SearchAttribute(page, "BusinessUnit");
await SearchAttribute(page, attributeBusinessUnit.key);
await page.selectOption(pageObjectsConfig.operatorDropDownSelector, "eq");
await page.fill(pageObjectsConfig.inputSearchValueSelector, businessUnitValue);
await page.fill(pageObjectsConfig.inputSearchValueSelector, attributeBusinessUnit.value);

await ClickWaitRetry(page, pageObjectsConfig.searchAttributeButton, pageObjectsConfig.searchAttributeTable);

// Verification of attribute table records
const noOfRecods = (await page.$$(pageObjectsConfig.searchAttributeTableRows)).length;
expect(noOfRecods).toBeGreaterThanOrEqual(2);

//Get the token from local storage once user logged in
// Get the token from local storage once user logged in
const idToken = await page.evaluate(() => { return localStorage.getItem('idToken') });

//Search Query String
const queryString = `BusinessUnit eq '${businessUnitValue}'`;
// Search Query String
const queryString = `${attributeBusinessUnit.key} eq '${attributeBusinessUnit.value}'`;

//Validate api response status code matches 200
var statusCode = await GetApiDetails(autoTestConfig.apiurl, queryString, idToken!);
// Validate api response status code matches 200
const statusCode = await GetApiDetails(autoTestConfig.apiurl, queryString, idToken!);

expect(statusCode).toEqual(200);

})

it('Valid search user attributes query to verify data returns on UI and API response status 200', async () => {
page.setDefaultTimeout(pageTimeOut.timeOutInMilliSeconds);
await SearchAttribute(page, "productid");
await SearchAttribute(page, attributeProductType.key);
await page.selectOption(pageObjectsConfig.operatorDropDownSelector, "eq");
await page.fill(pageObjectsConfig.inputSearchValueSelector, batchAttributeProduct);
await page.fill(pageObjectsConfig.inputSearchValueSelector, attributeProductType.value);

await ClickWaitRetry(page, pageObjectsConfig.searchAttributeButton, pageObjectsConfig.searchAttributeTable);
await ExpectAllResultsHaveBatchUserAttValue(page, attributeProductType.value);

// Verification of attribute table records
const productNames = await page.$$eval(pageObjectsConfig.attributeTableDataSelector, options => { return options.map(option => option.textContent) });

for (let index = 0; index < productNames.length; index++) {
const productName = productNames[index];

expect(productName.toUpperCase()).toEqual(batchAttributeProduct.toUpperCase());
}
//Get the token from local storage once user logged in
// Get the token from local storage once user logged in
const idToken = await page.evaluate(() => { return localStorage.getItem('idToken') });

//Search Query String
const queryString = `$batch(product) eq '${batchAttributeProduct}'`;
// Search Query String
const queryString = `$batch("${attributeProductType.key}") eq '${attributeProductType.value}'`;

//Validate api response status code matches 200
// Validate api response status code matches 200
var statusCode = await GetApiDetails(autoTestConfig.apiurl, queryString, idToken!);

expect(statusCode).toEqual(200);
Expand All @@ -90,9 +85,9 @@ describe('FSS UI E2E Scenarios', () => {

it('Invalid search query to verify data returns on UI and API response status 400', async () => {
page.setDefaultTimeout(pageTimeOut.timeOutInMilliSeconds);
await SearchAttribute(page, "FileSize");
await SearchAttribute(page, attributeFileSize.key);
await page.selectOption(pageObjectsConfig.operatorDropDownSelector, "eq");
await page.fill(pageObjectsConfig.inputSearchValueSelector, `'${fileSizeValue}'`);
await page.fill(pageObjectsConfig.inputSearchValueSelector, `'${attributeFileSize.value}'`);
await page.waitForTimeout(2000);

await ClickWaitRetry(page, pageObjectsConfig.searchAttributeButton, pageObjectsConfig.warningMessageSelector);
Expand All @@ -106,7 +101,7 @@ describe('FSS UI E2E Scenarios', () => {
const idToken = await page.evaluate(() => { return localStorage.getItem('idToken') })

//Search Query String
const queryString = `FileSize eq '${fileSizeValue}'`;
const queryString = `${attributeFileSize.key} eq '${attributeFileSize.value}'`;

//Validate api response status code matches 400
var statusCode = await GetApiDetails(autoTestConfig.apiurl, queryString, idToken!);
Expand Down
3 changes: 0 additions & 3 deletions Tests/E2ETests/helperattributevalues.ts

This file was deleted.

Loading

0 comments on commit 96fd31a

Please sign in to comment.