From 003e84e6585f54323606608bca7369a988ff062f Mon Sep 17 00:00:00 2001
From: Ilya Lyaukin <kzerby@gmail.com>
Date: Tue, 19 Nov 2024 12:05:27 -0600
Subject: [PATCH] Handle responsive design in the search test.

---
 playwright/e2e/atk_search/atk_search.spec.js | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/playwright/e2e/atk_search/atk_search.spec.js b/playwright/e2e/atk_search/atk_search.spec.js
index 72735a6..7502b5b 100644
--- a/playwright/e2e/atk_search/atk_search.spec.js
+++ b/playwright/e2e/atk_search/atk_search.spec.js
@@ -35,7 +35,7 @@ test.describe('Search tests.', () => {
     await page.goto(baseUrl);
 
     for (let item of searchData.simple) {
-      await page.getByLabel('Search Form').click();
+      await openSearchForm(page);
       const keyInput = page.getByRole("searchbox", { name: "Search" });
       await keyInput.fill(item.keyword);
       await keyInput.press("Enter");
@@ -95,7 +95,7 @@ test.describe('Search tests.', () => {
 
   test('(ATK-PW-1162) Search by a keyword: empty input @ATK-PW-1162 @search @content @empty', async ({ page }) => {
     await page.goto(baseUrl);
-    await page.getByLabel('Search Form').click();
+    await openSearchForm(page);
     const searchInput = page.getByRole("searchbox", { name: "Search" });
     await expect(searchInput).toHaveAttribute('placeholder', 'Search by keyword or phrase.');
   });
@@ -115,6 +115,18 @@ test.describe('Search tests.', () => {
     await expect(page.getByText("Enter some keywords.")).toBeVisible();
   });
 
+  async function openSearchForm(page) {
+    // Handle "responsive design". If "Search form" isn't visible,
+    // have to click main menu button first.
+
+    let searchForm = page.getByLabel('Search Form');
+    await searchForm.waitFor();
+    if (!(await searchForm.isVisible())) {
+      await page.getByLabel('Main Menu').click();
+    }
+    await searchForm.click();
+  }
+
   async function checkResult(page, item) {
     const resultLocatorList = await page.locator('.search-result__title').all();
     const resultList = [];
-- 
GitLab