Skip to content

Commit eb41d6e

Browse files
committed
Tests: Refactored mocks to new mock folder
1 parent 97a8f2a commit eb41d6e

File tree

3 files changed

+42
-39
lines changed

3 files changed

+42
-39
lines changed

tests/src/coveo.spec.js

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { expect, test } from '@playwright/test';
2+
import { mockCoveoCredentials, mockCoveoData } from './mock';
23
import {
34
buildURLFragment,
45
handleConsentPopup,
@@ -15,47 +16,12 @@ async function submitSearchQuery(page, query) {
1516
await page.waitForSelector('#search-v2');
1617
}
1718

18-
async function mockCoveo(page, request) {
19-
// Get credentials
20-
const tokenBaseURL = 'https://docs-dev.nginx.com';
21-
const tokenEndpoint = '/api/v1/auth/search_token';
22-
const username = process.env.FRONT_DOOR_USERNAME;
23-
const password = process.env.FRONT_DOOR_PASSWORD;
24-
const response = await request.get(tokenBaseURL + tokenEndpoint, {
25-
headers: {
26-
Authorization:
27-
'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'),
28-
},
29-
});
30-
31-
expect(response.ok()).toBeTruthy();
32-
expect(response.status()).toBe(200);
33-
34-
const credentials = await response.json();
35-
36-
// Mock the local request to be successful, then reload the page.
37-
await page.route(`**${tokenEndpoint}`, async (route) => {
38-
await route.fulfill({
39-
status: 200,
40-
contentType: 'application/json',
41-
body: JSON.stringify(credentials),
42-
});
43-
});
44-
await page.reload();
45-
}
46-
47-
const mockData = {
48-
validQuery: 'proxy',
49-
invalidQuery: 'abcdefghijkl',
50-
filters: ['numberOfResults=100', 'sortCriteria=date descending'],
51-
};
52-
5319
test.describe('Coveo test', () => {
5420
test.beforeEach(async ({ page, request }) => {
5521
await page.goto('/');
5622
await page.waitForLoadState('load');
5723
await waitFor(async () => await handleConsentPopup(page));
58-
await mockCoveo(page, request);
24+
await mockCoveoCredentials(page, request);
5925
});
6026

6127
test.afterEach(async ({ page }) => {
@@ -66,11 +32,11 @@ test.describe('Coveo test', () => {
6632
});
6733

6834
test('valid search query', async ({ page }) => {
69-
await submitSearchQuery(page, mockData.validQuery);
35+
await submitSearchQuery(page, mockCoveoData.validQuery);
7036
});
7137

7238
test('invalid search query', async ({ page }) => {
73-
await submitSearchQuery(page, mockData.invalidQuery);
39+
await submitSearchQuery(page, mockCoveoData.invalidQuery);
7440
const resultsPage = page.getByTestId('search-results-page');
7541
const main = resultsPage.locator('atomic-layout-section[section="main"]');
7642
const noResultsMessage = main.locator('[part="no-results"]');
@@ -80,7 +46,7 @@ test.describe('Coveo test', () => {
8046
test('inbound link do not reset URL', async ({ page }) => {
8147
// Use ONLY generic filters. Do not add any product specific filters, particularly from the facet.
8248
// If these basic filters work, then its safe to assume, adding facet filters will not reset the URL.
83-
const endpoint = `/search.html#q=${mockData.validQuery}${buildURLFragment(mockData.filters)}`;
49+
const endpoint = `/search.html#q=${mockCoveoData.validQuery}${buildURLFragment(mockCoveoData.filters)}`;
8450
await page.goto(endpoint);
8551
await page.waitForSelector('#search-v2');
8652

tests/src/mock/coveo.mock.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { expect } from '@playwright/test';
2+
3+
export const mockCoveoData = {
4+
validQuery: 'proxy',
5+
invalidQuery: 'abcdefghijkl',
6+
filters: ['numberOfResults=100', 'sortCriteria=date descending'],
7+
};
8+
9+
export async function mockCoveoCredentials(page, request) {
10+
// Get credentials
11+
const tokenBaseURL = 'https://docs-dev.nginx.com';
12+
const tokenEndpoint = '/api/v1/auth/search_token';
13+
const username = process.env.FRONT_DOOR_USERNAME;
14+
const password = process.env.FRONT_DOOR_PASSWORD;
15+
const response = await request.get(tokenBaseURL + tokenEndpoint, {
16+
headers: {
17+
Authorization:
18+
'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'),
19+
},
20+
});
21+
22+
expect(response.ok()).toBeTruthy();
23+
expect(response.status()).toBe(200);
24+
25+
const credentials = await response.json();
26+
27+
// Mock the local request to be successful, then reload the page.
28+
await page.route(`**${tokenEndpoint}`, async (route) => {
29+
await route.fulfill({
30+
status: 200,
31+
contentType: 'application/json',
32+
body: JSON.stringify(credentials),
33+
});
34+
});
35+
await page.reload();
36+
}

tests/src/mock/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './coveo.mockdata';

0 commit comments

Comments
 (0)