Skip to content

Commit 024286c

Browse files
committed
refactor: combine file import and geocode tests per review feedback
1 parent 128d962 commit 024286c

11 files changed

Lines changed: 248 additions & 256 deletions
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
import { test, expect } from '@playwright/test';
2+
3+
test('Import a geojson point and zoom map to location', async ({ page }) => {
4+
await page.goto('/');
5+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
6+
await page
7+
.locator('app-aoi-filter')
8+
.getByRole('button', { name: 'Import File' })
9+
.click();
10+
11+
await page
12+
.locator('app-aoi-filter')
13+
.locator('input[type="file"]')
14+
.setInputFiles('./e2e/geographic/assets/point.geojson');
15+
16+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
17+
18+
const value = await page
19+
.locator('app-aoi-filter')
20+
.locator('input[name="searchPolygon"]')
21+
.inputValue();
22+
expect(value).toContain('POINT(-102.4805 38.7541)');
23+
24+
await expect(page).toHaveURL(/center=-102\.48.*38\.75/);
25+
});
26+
27+
test('Import a KML file', async ({ page }) => {
28+
await page.goto('/');
29+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
30+
await page
31+
.locator('app-aoi-filter')
32+
.getByRole('button', { name: 'Import File' })
33+
.click();
34+
35+
await page
36+
.locator('app-aoi-filter')
37+
.locator('input[type="file"]')
38+
.setInputFiles('./e2e/geographic/assets/basic.kml');
39+
40+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
41+
42+
const value = await page
43+
.locator('app-aoi-filter')
44+
.locator('input[name="searchPolygon"]')
45+
.inputValue();
46+
expect(value).toContain('POLYGON');
47+
expect(value).toContain('-43.7081');
48+
});
49+
50+
test('Import a .shp shape file', async ({ page }) => {
51+
await page.goto('/');
52+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
53+
await page
54+
.locator('app-aoi-filter')
55+
.getByRole('button', { name: 'Import File' })
56+
.click();
57+
58+
await page
59+
.locator('app-aoi-filter')
60+
.locator('input[type="file"]')
61+
.setInputFiles('./e2e/geographic/assets/boundary.shp');
62+
63+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
64+
65+
const value = await page
66+
.locator('app-aoi-filter')
67+
.locator('input[name="searchPolygon"]')
68+
.inputValue();
69+
expect(value).toContain('POLYGON');
70+
});
71+
72+
test('Import a .zip shape file', async ({ page }) => {
73+
await page.goto('/');
74+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
75+
await page
76+
.locator('app-aoi-filter')
77+
.getByRole('button', { name: 'Import File' })
78+
.click();
79+
80+
await page
81+
.locator('app-aoi-filter')
82+
.locator('input[type="file"]')
83+
.setInputFiles('./e2e/geographic/assets/boundary.zip');
84+
85+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
86+
87+
const value = await page
88+
.locator('app-aoi-filter')
89+
.locator('input[name="searchPolygon"]')
90+
.inputValue();
91+
expect(value).toContain('POLYGON');
92+
});
93+
94+
test('Import multiple geojson files sequentially', async ({ page }) => {
95+
await page.goto('/');
96+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
97+
await page
98+
.locator('app-aoi-filter')
99+
.getByRole('button', { name: 'Import File' })
100+
.click();
101+
102+
await page
103+
.locator('app-aoi-filter')
104+
.locator('input[type="file"]')
105+
.setInputFiles('./e2e/geographic/assets/basic.geojson');
106+
107+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
108+
109+
const firstValue = await page
110+
.locator('app-aoi-filter')
111+
.locator('input[name="searchPolygon"]')
112+
.inputValue();
113+
expect(firstValue).toContain('POLYGON');
114+
115+
await page
116+
.locator('app-aoi-filter')
117+
.getByRole('button', { name: 'Import File' })
118+
.click();
119+
120+
await page
121+
.locator('app-aoi-filter')
122+
.locator('input[type="file"]')
123+
.setInputFiles('./e2e/geographic/assets/north-carolina.geojson');
124+
125+
await page.waitForResponse((r) => r.url().includes('files_to_wkt'));
126+
127+
const secondValue = await page
128+
.locator('app-aoi-filter')
129+
.locator('input[name="searchPolygon"]')
130+
.inputValue();
131+
expect(secondValue).toContain('POLYGON');
132+
expect(secondValue).not.toEqual(firstValue);
133+
});
134+
135+
test('Import rejects invalid file type', async ({ page }) => {
136+
await page.goto('/');
137+
await page.locator('app-aoi-filter').getByText('arrow_drop_down').click();
138+
await page
139+
.locator('app-aoi-filter')
140+
.getByRole('button', { name: 'Import File' })
141+
.click();
142+
143+
await page
144+
.locator('app-aoi-filter')
145+
.locator('input[type="file"]')
146+
.setInputFiles('./e2e/geographic/assets/invalid.csv');
147+
148+
const aoiValue = await page
149+
.locator('app-aoi-filter')
150+
.locator('input[name="searchPolygon"]')
151+
.inputValue();
152+
expect(aoiValue).toBe('');
153+
});

e2e/geographic/geocode-clear-on-aoi-update.spec.ts

Lines changed: 0 additions & 40 deletions
This file was deleted.

e2e/geographic/geocode-map-pan.spec.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

e2e/geographic/geocode-to-wkt.spec.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

e2e/geographic/geocode.spec.ts

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import { test, expect } from '@playwright/test';
2+
import { waitForASFAPIResponse } from 'e2e/helpers';
3+
4+
test('Place name is geocoded to WKT AOI and returns search results', async ({
5+
page,
6+
}) => {
7+
await page.goto('/');
8+
await page.getByRole('button', { name: 'Sentinel-' }).click();
9+
await page.getByRole('menuitem', { name: 'S1 Burst' }).click();
10+
11+
const aoiFilter = page.locator('app-aoi-filter');
12+
await aoiFilter.locator('.additional-aoi-toggle').click();
13+
14+
const geocodeInput = aoiFilter
15+
.locator('app-geocode-selector')
16+
.getByLabel('Search for a location');
17+
await geocodeInput.fill('Tibet');
18+
await page.getByRole('option').first().click();
19+
20+
await expect(aoiFilter.locator('input[name="searchPolygon"]')).toHaveValue(
21+
/POINT\(88\.0439 31\.5534\)/,
22+
);
23+
await expect(geocodeInput).toHaveValue(/Tibet Autonomous Region.*China/);
24+
25+
const responsePromise = waitForASFAPIResponse(page);
26+
await page
27+
.locator('#mat-button-toggle-8-button')
28+
.getByRole('button', { name: 'SEARCH' })
29+
.click();
30+
await responsePromise;
31+
32+
await expect(page.locator('mat-card-header').first()).toBeVisible();
33+
});
34+
35+
test('Place name geocode pans the map to the entered location', async ({
36+
page,
37+
}) => {
38+
await page.goto('/');
39+
40+
const aoiFilter = page.locator('app-aoi-filter');
41+
await aoiFilter.locator('.additional-aoi-toggle').click();
42+
43+
const geocodeInput = aoiFilter
44+
.locator('app-geocode-selector')
45+
.getByLabel('Search for a location');
46+
await geocodeInput.fill('Big Bear Lake');
47+
await page.getByRole('option').first().click();
48+
49+
await expect(aoiFilter.locator('input[name="searchPolygon"]')).toHaveValue(
50+
/POINT\(-116\.9115 34\.2437\)/,
51+
);
52+
await expect(geocodeInput).toHaveValue(
53+
/Big Bear Lake.*California.*United States/,
54+
);
55+
56+
await expect(page).toHaveURL(/center=-116\.91.*34\.24/);
57+
});
58+
59+
test('Geocoded place name is cleared when AOI is manually updated', async ({
60+
page,
61+
}) => {
62+
await page.goto('/');
63+
await page.getByRole('button', { name: 'Sentinel-' }).click();
64+
await page.getByRole('menuitem', { name: 'S1 Burst' }).click();
65+
66+
const aoiFilter = page.locator('app-aoi-filter');
67+
await aoiFilter.locator('.additional-aoi-toggle').click();
68+
69+
const geocodeInput = aoiFilter
70+
.locator('app-geocode-selector')
71+
.getByLabel('Search for a location');
72+
await geocodeInput.fill('Sierra Le');
73+
await page.getByRole('option').nth(1).click();
74+
75+
await expect(aoiFilter.locator('input[name="searchPolygon"]')).toHaveValue(
76+
/POINT\(-77\.3788 25\.0113\)/,
77+
);
78+
await expect(geocodeInput).toHaveValue(
79+
/Sierra Leone Avenue.*Nassau.*Bahamas/,
80+
);
81+
82+
await aoiFilter
83+
.locator('textarea[name="searchPolygonLarge"]')
84+
.fill('POINT(-120.6999 38.3044)');
85+
86+
const responsePromise = waitForASFAPIResponse(page);
87+
await page
88+
.locator('#mat-button-toggle-8-button')
89+
.getByRole('button', { name: 'SEARCH' })
90+
.click();
91+
await responsePromise;
92+
93+
await aoiFilter.locator('.additional-aoi-toggle').click();
94+
await expect(geocodeInput).toHaveValue('');
95+
});

e2e/geographic/import-geojson-zoom.spec.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

e2e/geographic/import-invalid-file.spec.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)