diff --git a/package-lock.json b/package-lock.json index e2a274d067..ee2fbf5782 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,7 +106,7 @@ "@jest/globals": "29.5.0", "@octokit/graphql": "5.0.4", "@octokit/rest": "^19.0.4", - "@playwright/test": "1.33.0", + "@playwright/test": "1.34.3", "@types/github-slugger": "^2.0.0", "@types/imurmurhash": "^0.1.1", "@types/js-cookie": "^3.0.2", @@ -4106,13 +4106,13 @@ "integrity": "sha512-jkfX/35EsxDe9ruTx3He59FyE+y5WDF5S4YJ7TABj0c8egHV2FLeADavknvr12CnSu0QTybv9ufKfPJDsYZYNw==" }, "node_modules/@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz", + "integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==", "dev": true, "dependencies": { "@types/node": "*", - "playwright-core": "1.33.0" + "playwright-core": "1.34.3" }, "bin": { "playwright": "cli.js" @@ -15794,12 +15794,12 @@ } }, "node_modules/playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz", + "integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==", "dev": true, "bin": { - "playwright": "cli.js" + "playwright-core": "cli.js" }, "engines": { "node": ">=14" @@ -22273,14 +22273,14 @@ "integrity": "sha512-jkfX/35EsxDe9ruTx3He59FyE+y5WDF5S4YJ7TABj0c8egHV2FLeADavknvr12CnSu0QTybv9ufKfPJDsYZYNw==" }, "@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz", + "integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==", "dev": true, "requires": { "@types/node": "*", "fsevents": "2.3.2", - "playwright-core": "1.33.0" + "playwright-core": "1.34.3" } }, "@primer/behaviors": { @@ -30255,9 +30255,9 @@ } }, "playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz", + "integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==", "dev": true }, "port-used": { diff --git a/package.json b/package.json index 6128939569..dca7b8e9fe 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@jest/globals": "29.5.0", "@octokit/graphql": "5.0.4", "@octokit/rest": "^19.0.4", - "@playwright/test": "1.33.0", + "@playwright/test": "1.34.3", "@types/github-slugger": "^2.0.0", "@types/imurmurhash": "^0.1.1", "@types/js-cookie": "^3.0.2", diff --git a/tests/browser/browser.js b/tests/browser/browser.js index af7b9aa279..89c8d88d53 100644 --- a/tests/browser/browser.js +++ b/tests/browser/browser.js @@ -11,45 +11,3 @@ describe('homepage', () => { await expect(page.title()).resolves.toMatch('GitHub Docs') }) }) - -// Note: we can only test Elasticsearch searches on things we have indexed -// in the fixtures. See the contents of /src/search/tests/fixtures/search-indexes -describe('browser search', () => { - jest.setTimeout(60 * 1000) - - it('works on small and x-small viewport landing pages', async () => { - await page.setViewport({ width: 500, height: 700 }) - await page.goto('http://localhost:4000/en/actions') - await page.click('[data-testid=mobile-search-button]') - await page.click('[data-testid=site-search-input]') - await page.type('[data-testid=site-search-input]', 'foo') - await page.keyboard.press('Enter') - await page.waitForSelector('[data-testid=search-result]') - const hits = await page.$$('[data-testid=search-result]') - expect(hits.length).toBeGreaterThan(1) - }) - - it('works on medium -> x-large viewport landing pages', async () => { - const initialViewport = page.viewport() - await page.setViewport({ width: 1000, height: 768 }) - await page.goto('http://localhost:4000/en/actions') - await page.click('[data-testid=desktop-header] [data-testid=site-search-input]') - await page.type('[data-testid=desktop-header] [data-testid=site-search-input]', 'foo') - await page.keyboard.press('Enter') - await page.waitForSelector('[data-testid=search-result]') - const hits = await page.$$('[data-testid=search-result]') - expect(hits.length).toBeGreaterThan(1) - await page.setViewport(initialViewport) - }) - // 404 page is statically generated with next, so search is not available, but may possibly be brought back - // Docs Engineering issue: 961 - it.skip('works on 404 error page', async () => { - await page.goto('http://localhost:4000/en/404') - await page.click('[data-testid=search] input[type="search"]') - await page.type('[data-testid=search] input[type="search"]', 'actions') - await page.keyboard.press('Enter') - await page.waitForSelector('[data-testid=search-results]') - const hits = await page.$$('[data-testid=search-result]') - expect(hits.length).toBeGreaterThan(5) - }) -}) diff --git a/tests/rendering-fixtures/playwright-rendering.spec.ts b/tests/rendering-fixtures/playwright-rendering.spec.ts index 7d52113f25..9eac2d9355 100644 --- a/tests/rendering-fixtures/playwright-rendering.spec.ts +++ b/tests/rendering-fixtures/playwright-rendering.spec.ts @@ -253,9 +253,8 @@ test.describe('test nav at different viewports', () => { await expect(page.getByRole('menuitemradio', { name: 'Enterprise Cloud' })).toBeVisible() // language picker is visible - // TODO: currently no languages enabled for headless tests - // await page.getByRole('button', { name: 'Select language: current language is English' }).click() - // await expect(page.getByRole('menuitemradio', { name: 'English' })).toBeVisible() + await page.getByRole('button', { name: 'Select language: current language is English' }).click() + await expect(page.getByRole('menuitemradio', { name: 'English' })).toBeVisible() // header sign up button is visible await expect(page.getByTestId('header-signup')).toBeVisible() @@ -298,14 +297,11 @@ test.describe('test nav at different viewports', () => { await expect(page.getByRole('menuitemradio', { name: 'Enterprise Cloud' })).toBeVisible() // language picker is in mobile menu - // TODO: currently no languages enabled for headless tests - // await page.getByTestId('mobile-menu').click() - // await page.getByRole('button', { name: 'Select language: current language is English' }).click() - // await expect(page.getByRole('menuitemradio', { name: 'English' })).toBeVisible() + await page.getByTestId('mobile-menu').click() + await page.getByRole('button', { name: 'Select language: current language is English' }).click() + await expect(page.getByRole('menuitemradio', { name: 'English' })).toBeVisible() // sign up button is in mobile menu - await expect(page.getByTestId('header-signup')).not.toBeVisible() - await page.getByTestId('mobile-menu').click() await expect(page.getByTestId('mobile-signup')).toBeVisible() // hamburger button for sidebar overlay is visible @@ -324,9 +320,8 @@ test.describe('test nav at different viewports', () => { // header sign-up button is not visible await expect(page.getByTestId('header-signup')).not.toBeVisible() - // TODO: currently no languages enabled for headless tests // language picker is not visible - // await expect(page.getByTestId('language-picker')).not.toBeVisible() + await expect(page.getByTestId('language-picker')).not.toBeVisible() // version picker is not visible await expect( @@ -340,9 +335,8 @@ test.describe('test nav at different viewports', () => { await page.getByTestId('mobile-menu').click() await expect(page.getByTestId('open-mobile-menu').getByTestId('version-picker')).toBeVisible() - // TODO: currently no languages enabled for headless tests // language picker is in mobile menu - // await expect(page.getByTestId('open-mobile-menu').getByTestId('language-picker')).toBeVisible() + await expect(page.getByTestId('open-mobile-menu').getByTestId('language-picker')).toBeVisible() // sign up button is in mobile menu await expect(page.getByTestId('open-mobile-menu').getByTestId('version-picker')).toBeVisible() @@ -352,6 +346,37 @@ test.describe('test nav at different viewports', () => { await page.getByTestId('sidebar-hamburger').click() await expect(page.getByTestId('sidebar-product-dialog')).toBeVisible() }) + + test('do a search when the viewport is x-small', async ({ page }) => { + test.skip(!SEARCH_TESTS, 'No local Elasticsearch, no tests involving search') + + page.setViewportSize({ + width: 500, + height: 700, + }) + await page.goto('/get-started/foo/bar') + await page.getByRole('button', { name: 'Open Search Bar' }).click() + await page.getByTestId('site-search-input').click() + await page.getByTestId('site-search-input').fill('serve playwright') + await page.getByTestId('site-search-input').press('Enter') + await expect(page).toHaveURL(/\/search\?query=serve\+playwright/) + await expect(page).toHaveTitle(/\d Search results for "serve playwright"/) + }) + + test('do a search when the viewport is medium', async ({ page }) => { + test.skip(!SEARCH_TESTS, 'No local Elasticsearch, no tests involving search') + + page.setViewportSize({ + width: 1000, + height: 700, + }) + await page.goto('/get-started/foo/bar') + await page.getByTestId('site-search-input').click() + await page.getByTestId('site-search-input').fill('serve playwright') + await page.getByTestId('site-search-input').press('Enter') + await expect(page).toHaveURL(/\/search\?query=serve\+playwright/) + await expect(page).toHaveTitle(/\d Search results for "serve playwright"/) + }) }) test.describe('survey', () => {