Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement playwright acceptance tests for vertical full page map #1155

Merged
merged 31 commits into from
Dec 4, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
56b1688
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
9d556b4
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
83d05c1
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
43a8063
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
fd2bee8
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
ec8e130
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
766fad2
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
eb3436b
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
c71f355
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
c563add
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
843b6d6
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
3b781e0
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
980b667
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
f04d28a
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
8fd3fd2
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
b5318ba
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
f13569b
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
dc814cf
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
14de8da
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
45d6554
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
55f11bd
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
ae618ed
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
f5e4d76
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
6c58224
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
968720b
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
9464f5c
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
00e07cc
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
b639059
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
95365c5
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
9ea02e2
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
8466eca
Implement playwright acceptance tests for vertical full page map
likimmy Nov 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@ node_modules
/playwright-report/
/blob-report/
/playwright/.cache/
/test-results/
72 changes: 28 additions & 44 deletions e2e/vertical-full-page-map.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,54 +3,41 @@ import { test, expect } from '@playwright/test';
test.describe('full page map test suite', () => {
test.beforeEach(async ({page}) => {
await page.goto('http://localhost:5042/locations_full_page_map');
await page.getByPlaceholder('Search for locations').click();
});

test('can search and get results', async ({ page }) => {
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
await page.getByPlaceholder('Search for locations').fill('virginia');
await page.getByPlaceholder('Search for locations').press('Enter');
const count = await page.locator('#js-answersVerticalResults').count();
expect(count).toBeGreaterThan(0);
});

test('clicking on a pin focuses on a result card', async ({ page }) => {
await page.getByPlaceholder('Search for locations').fill('virginia');
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
await page.getByPlaceholder('Search for locations').press('Enter');
await page.getByRole('button', { name: 'Result number 5' }).click();
const results = page.locator('#js-answersVerticalResults div');
const count = await results.count();
let hasPinFocused = false;

for (var i = 0; i < count; i++) {
const currResult = await results.nth(i);
const classes = await currResult.evaluate(node => Array.from(node.classList));

if (classes.includes('yxt-Card--pinFocused')) {
hasPinFocused = true;
break;
}
}

expect(hasPinFocused).toBe(true);
await expect(page.locator('.yxt-Card--pinFocused')).toBeAttached();
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
});

test('search when map moves works', async ({ page }) => {
await page.getByPlaceholder('Search for locations').fill('virginia');
await page.getByPlaceholder('Search for locations').press('Enter');
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
await page.mouse.wheel(600, 300);
const result = page.locator('#js-answersVerticalResults div').nth(0);
await expect(result).toBeAttached();
const map = page.locator('.mapboxgl-canvas');
await map.dragTo(map, {
sourcePosition: { x: 788, y: 345},
targetPosition: { x: 1011, y: 225},
})
const response = await page.waitForResponse(resp =>
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query'));
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query')
&& resp.url().includes('radius'));
await expect(response.status()).toBe(200);
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
});

test('search this area button works', async ({ page }) => {
await page.getByLabel('Map controls').getByText('Search When Map Moves').click();
await page.getByPlaceholder('Search for locations').fill('virginia');
await page.getByPlaceholder('Search for locations').press('Enter');
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
await page.getByLabel('Map controls').getByText('Search When Map Moves').click();
await page.waitForResponse(resp =>
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query'));
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
await page.locator('div').filter({ hasText: /^Search This Area$/ }).nth(1).click();
await page.mouse.move(1200, 450, {steps: 5});
const response = await page.waitForResponse(resp =>
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query'));
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query')
&& resp.url().includes('radius'));
await expect(response.status()).toBe(200);
});

Expand All @@ -72,8 +59,8 @@ test.describe('full page map test suite', () => {
await page.getByPlaceholder('Search for locations').fill('virginia');
await page.getByPlaceholder('Search for locations').press('Enter');
await page.getByLabel('Go to the next page of results').click();
const locator = page.locator('#js-answersVerticalResults div').nth(0);
await expect(locator).toBeVisible();
const topOfResults = page.locator('#js-answersVerticalResults div').nth(0);
await expect(topOfResults).toBeVisible();
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
});

});
Expand All @@ -91,28 +78,25 @@ test.describe('full page map with filters test suite', () => {

test('clicking on a pin closes the filter view', async ({ page }) => {
await page.getByRole('button', { name: 'filter results' }).click();
await page.getByText('Cats (1)').click();
const filterView = page.getByLabel('Main location search').locator('div').filter({ hasText: 'Filters Services reset Cats (1) Dogs (1) Sleep (1)' }).first();
await expect(filterView).toBeVisible();
await page.getByRole('button', { name: 'Result number 1' }).click();
await expect(filterView).not.toBeVisible();
const filters = page.locator('#js-answersFacets');
await expect(filters).toBeVisible();
await page.getByRole('button', { name: 'Result number 7' }).click();
await expect(filters).not.toBeVisible();
});

test('clicking on a cluster causes the map to zoom in', async ({ page }) => {
test('clicking on a cluster causes the map to zoom in and new search is ran', async ({ page }) => {
const result = page.locator('#js-answersVerticalResults div').nth(0);
await expect(result).toBeAttached();
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
nmanu1 marked this conversation as resolved.
Show resolved Hide resolved
const originalCount = await page.locator('.yxt-Card').count();
await page.getByRole('button', { name: 'Cluster of 2 results' }).click();
const response = await page.waitForResponse(resp => resp.url().includes('https://prod-cdn.us.yextapis.com/v2/accounts/me/search/vertical/query')
const response = await page.waitForResponse(resp => resp.url().includes('https://prod-cdn.us.yextapis.com/v2/accounts/me/search/vertical/query')
&& resp.url().includes('input=virginia')
&& resp.url().includes('filters'));
await expect(response.status()).toBe(200);
await expect(response.status()).toBe(200);
const newResult = page.locator('#js-answersVerticalResults div').nth(0);
await expect(newResult).toBeAttached();
const countAfterSelectingCluster = await page.locator('.yxt-Card').count();
expect(originalCount).toBeGreaterThan(countAfterSelectingCluster);
});

test('clicking on a cluster causes a new search to be run', async ({ page }) => {
await page.getByRole('button', { name: 'Cluster of 4 results' }).click();
const response = await page.waitForResponse(resp =>
resp.url().includes('https:\/\/prod-cdn\.us\.yextapis\.com\/v2\/accounts\/me\/search\/vertical\/query'));
await expect(response.status()).toBe(200);
});
});
Loading