]> git.openstreetmap.org Git - nominatim-ui.git/blob - test/reverse.js
Rebundle latest version
[nominatim-ui.git] / test / reverse.js
1 import assert from 'assert';
2
3 const reverse_only = !!process.env.REVERSE_ONLY;
4
5 describe('Reverse Page', function () {
6   let page;
7
8   describe('No search', function () {
9     before(async function () {
10       page = await browser.newPage();
11       await page.goto('http://localhost:9999/reverse.html');
12     });
13
14     after(async function () {
15       await page.close();
16     });
17
18     it('should allow switching coordinates', async function () {
19       let lat_handle = await page.$('input[name=lat]');
20       let lon_handle = await page.$('input[name=lon]');
21
22       assert.equal(await lat_handle.evaluate(node => node.value), '');
23       assert.equal(await lon_handle.evaluate(node => node.value), '');
24
25       await page.click('#switch-coords');
26       // no change
27       assert.equal(await lat_handle.evaluate(node => node.value), '');
28       assert.equal(await lon_handle.evaluate(node => node.value), '');
29
30       await page.type('input[name=lat]', '5');
31       await page.type('input[name=lon]', '10');
32       await page.click('#switch-coords');
33       // switched
34       assert.equal(await lat_handle.evaluate(node => node.value), 10);
35       assert.equal(await lon_handle.evaluate(node => node.value), 5);
36     });
37   });
38
39   describe('With search', function () {
40     before(async function () {
41       page = await browser.newPage();
42       await page.goto('http://localhost:9999/reverse.html');
43       await page.type('input[name=lat]', '27.1750090510034');
44       await page.type('input[name=lon]', '78.04209025');
45       await page.click('button[type=submit]');
46       await page.waitForSelector('#searchresults');
47     });
48
49     after(async function () {
50       await page.close();
51     });
52
53     it('should return single result', async function () {
54       let results_count = await page.$$eval('#searchresults .result', elements => elements.length);
55
56       assert.deepStrictEqual(results_count, 1);
57     });
58
59     it('should display a map', async function () {
60       await page.waitForSelector('#map');
61       assert.equal((await page.$$('#map')).length, 1);
62     });
63
64     it('should redirect to details page on clicking details button', async function () {
65       let current_url;
66       let results = await page.$$('#searchresults .result a');
67
68       await results[0].click();
69       await page.waitForSelector('table#address');
70
71       current_url = new URL(await page.url());
72       assert.deepStrictEqual(current_url.pathname, '/details.html');
73     });
74
75     if (!reverse_only) {
76
77       it('should clear results when switching to search page', async function () {
78         await page.click('nav a[href="search.html"]');
79
80         const results_count =
81           await page.$$eval('#searchresults .result', elements => elements.length);
82
83         assert.deepStrictEqual(results_count, 0);
84       });
85     }
86   });
87 });