diff --git a/.changeset/new-candles-beam.md b/.changeset/new-candles-beam.md new file mode 100644 index 000000000000..e93d925d661f --- /dev/null +++ b/.changeset/new-candles-beam.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixed window component appearing over the dev overlay on small windows. Added a maximum length to sections of the tooltip component diff --git a/packages/astro/e2e/dev-overlay.test.js b/packages/astro/e2e/dev-overlay.test.js new file mode 100644 index 000000000000..f4efab1414b0 --- /dev/null +++ b/packages/astro/e2e/dev-overlay.test.js @@ -0,0 +1,90 @@ +import { expect } from '@playwright/test'; +import { testFactory } from './test-utils.js'; + +const test = testFactory({ + root: './fixtures/dev-overlay/', +}); + +let devServer; + +test.beforeAll(async ({ astro }) => { + devServer = await astro.startDevServer(); +}); + +test.afterAll(async () => { + await devServer.stop(); +}); + +test.describe('Dev Overlay zzz', () => { + test('dev overlay exists in the page', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const devOVerlay = page.locator('astro-dev-overlay'); + await expect(devOVerlay).toHaveCount(1); + }); + + test('can open Astro plugin', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const overlay = page.locator('astro-dev-overlay'); + const pluginButton = overlay.locator('button[data-plugin-id="astro"]'); + await pluginButton.click(); + + const astroPluginCanvas = overlay.locator( + 'astro-dev-overlay-plugin-canvas[data-plugin-id="astro"]' + ); + const astroWindow = astroPluginCanvas.locator('astro-dev-overlay-window'); + await expect(astroWindow).toHaveCount(1); + await expect(astroWindow).toBeVisible(); + + // Toggle plugin off + await pluginButton.click(); + await expect(astroWindow).not.toBeVisible(); + }); + + test('xray shows highlights and tooltips', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const overlay = page.locator('astro-dev-overlay'); + const pluginButton = overlay.locator('button[data-plugin-id="astro:xray"]'); + await pluginButton.click(); + + const xrayCanvas = overlay.locator( + 'astro-dev-overlay-plugin-canvas[data-plugin-id="astro:xray"]' + ); + const xrayHighlight = xrayCanvas.locator('astro-dev-overlay-highlight'); + await expect(xrayHighlight).toBeVisible(); + + await xrayHighlight.hover(); + const xrayHighlightTooltip = xrayHighlight.locator('astro-dev-overlay-tooltip'); + await expect(xrayHighlightTooltip).toBeVisible(); + + // Toggle plugin off + await pluginButton.click(); + await expect(xrayHighlight).not.toBeVisible(); + await expect(xrayHighlightTooltip).not.toBeVisible(); + }); + + test('audit shows higlights and tooltips', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + + const overlay = page.locator('astro-dev-overlay'); + const pluginButton = overlay.locator('button[data-plugin-id="astro:audit"]'); + await pluginButton.click(); + + const auditCanvas = overlay.locator( + 'astro-dev-overlay-plugin-canvas[data-plugin-id="astro:audit"]' + ); + const auditHighlight = auditCanvas.locator('astro-dev-overlay-highlight'); + await expect(auditHighlight).toBeVisible(); + + await auditHighlight.hover(); + const auditHighlightTooltip = auditHighlight.locator('astro-dev-overlay-tooltip'); + await expect(auditHighlightTooltip).toBeVisible(); + + // Toggle plugin off + await pluginButton.click(); + await expect(auditHighlight).not.toBeVisible(); + await expect(auditHighlightTooltip).not.toBeVisible(); + }); +}); diff --git a/packages/astro/e2e/fixtures/dev-overlay/astro.config.mjs b/packages/astro/e2e/fixtures/dev-overlay/astro.config.mjs new file mode 100644 index 000000000000..380a501ac44b --- /dev/null +++ b/packages/astro/e2e/fixtures/dev-overlay/astro.config.mjs @@ -0,0 +1,8 @@ +import preact from '@astrojs/preact'; + +export default { + integrations: [preact()], + experimental: { + devOverlay: true + } +}; diff --git a/packages/astro/e2e/fixtures/dev-overlay/package.json b/packages/astro/e2e/fixtures/dev-overlay/package.json new file mode 100644 index 000000000000..707aa8718b0d --- /dev/null +++ b/packages/astro/e2e/fixtures/dev-overlay/package.json @@ -0,0 +1,10 @@ +{ + "name": "@e2e/dev-overlay", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/preact": "workspace:*", + "astro": "workspace:*", + "preact": "^10.17.1" + } +} diff --git a/packages/astro/e2e/fixtures/dev-overlay/src/components/HelloWorld.tsx b/packages/astro/e2e/fixtures/dev-overlay/src/components/HelloWorld.tsx new file mode 100644 index 000000000000..98f7d8bf42b9 --- /dev/null +++ b/packages/astro/e2e/fixtures/dev-overlay/src/components/HelloWorld.tsx @@ -0,0 +1,3 @@ +export function HelloWorld({ name }) { + return