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