]> git.openstreetmap.org Git - nominatim-ui.git/commitdiff
Search page: Set HTML page title for structured searches, too
authormarc tobias <mtmail@gmx.net>
Sun, 5 May 2024 13:54:29 +0000 (15:54 +0200)
committermtmail <mtmail@gmx.net>
Mon, 6 May 2024 12:15:25 +0000 (14:15 +0200)
CHANGES.md
src/pages/SearchPage.svelte
test/search.js

index e07ed244551f39674c1a5033421ef804fdbd8abb..910e011e165c19ee07672cde1fcdf8e4cdf7f756 100644 (file)
@@ -1,5 +1,7 @@
 # CHANGES
 
+    * Search page: Set HTML page title for structured searches, too
+
 * version 3.5.2 - 2024-04-05
     * Detail page: Link to postcode search not includes the country code
     * test-suite: fix typos based on a codespell run
index e80729f26ec281cab1b7df2505ca977342af0582..24fe1d855bc1fd242c696f1074940b1ebf2a96c2 100644 (file)
       fetch_from_api('search', api_request_params, function (data) {
         results_store.set(data);
 
-        update_html_title('Result for ' + api_request_params.q);
-
         if (anyStructuredFieldsSet) {
+          update_html_title('Result for ' + [
+            api_request_params.street,
+            api_request_params.city,
+            api_request_params.county,
+            api_request_params.state,
+            api_request_params.country,
+            api_request_params.postalcode
+          ].filter((text) => text && text.length > 1).join(', '));
+
           document.querySelector(".nav-tabs a[href='#structured']").click();
           document.querySelector('input[name=street]').focus();
         } else {
+          update_html_title('Result for ' + api_request_params.q);
+
           document.querySelector('input[name=q]').focus();
         }
       });
index e87ed0e41d723eec2ab66e891c85fbb1f1204fbb..4ea86cc5d24dfba20860295eb330b159b20e01bf 100644 (file)
@@ -146,6 +146,39 @@ describe('Search Page', function () {
     });
   });
 
+  describe('Structured search for Paris', function () {
+    before(async function () {
+      page = await browser.newPage();
+      await page.goto('http://localhost:9999/search.html');
+      await page.click(".nav-link[href='#structured']");
+      // await page.screenshot({ path: "./screen.png", fullPage: true });
+      await page.type('input[name=city]', 'Paris');
+      await page.type('input[name=country]', 'USA');
+      await page.click('#structured button[type=submit]');
+      await page.waitForSelector('#searchresults');
+    });
+
+    after(async function () {
+      await page.close();
+    });
+
+    it('should have a HTML page title', async function () {
+      assert.equal(await page.title(), 'Result for Paris, USA | Nominatim Demo');
+    });
+
+    it('should have added search params', async function () {
+      let current_url = new URL(await page.url());
+      assert.strictEqual(current_url.searchParams.get('q'), null);
+      assert.strictEqual(current_url.searchParams.get('city'), 'Paris');
+      assert.strictEqual(current_url.searchParams.get('country'), 'USA');
+    });
+
+    it('should have at least one result', async function () {
+      let results_count = await page.$$eval('#searchresults .result', elements => elements.length);
+      assert.ok(results_count > 1);
+    });
+  });
+
   describe('Search for OSM URL', function () {
     before(async function () {
       page = await browser.newPage();