/** * Copyright (c) Microsoft Corporation. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { stripAnsi } from 'tests/config/utils'; import { test, expect } from './pageTest'; test('should match', async ({ page }) => { await page.setContent(`

title

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "title" `); }); test('should match in list', async ({ page }) => { await page.setContent(`

title

title 2

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "title" `); }); test('should match list with accessible name', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - list "my list": - listitem: "one" - listitem: "two" `); }); test('should match deep item', async ({ page }) => { await page.setContent(`

title

title 2

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "title" `); }); test('should match complex', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - list: - listitem: - link "link" `); }); test('should match regex', async ({ page }) => { await page.setContent(`

Issues 12

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading ${/Issues \d+/} `); }); test('should allow text nodes', async ({ page }) => { await page.setContent(`

Microsoft

Open source projects and samples from Microsoft
`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "Microsoft" - text: "Open source projects and samples from Microsoft" `); }); test('details visibility', async ({ page }) => { await page.setContent(`
Summary
Details
`); await expect(page.locator('body')).toMatchAriaSnapshot(` - group: "Summary" `); }); test('checked attribute', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox `); await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox [checked] `); await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox [checked=true] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox [checked=false] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox [checked=mixed] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - checkbox [checked=5] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a boolean or "mixed"'); } }); test('disabled attribute', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [disabled] `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [disabled=true] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [disabled=false] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [disabled=invalid] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a boolean'); } }); test('expanded attribute', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [expanded] `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [expanded=true] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [expanded=false] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [expanded=invalid] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a boolean'); } }); test('level attribute', async ({ page }) => { await page.setContent(`

Section Title

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading `); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading [level=2] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - heading [level=3] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - heading [level=two] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a number'); } }); test('pressed attribute', async ({ page }) => { await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed] `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed=true] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed=false] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } // Test for 'mixed' state await page.setContent(` `); await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed=mixed] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed=true] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - button [pressed=5] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a boolean or "mixed"'); } }); test('selected attribute', async ({ page }) => { await page.setContent(`
Row
`); await expect(page.locator('body')).toMatchAriaSnapshot(` - row `); await expect(page.locator('body')).toMatchAriaSnapshot(` - row [selected] `); await expect(page.locator('body')).toMatchAriaSnapshot(` - row [selected=true] `); { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - row [selected=false] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain('Timed out 1000ms waiting for expect'); } { const e = await expect(page.locator('body')).toMatchAriaSnapshot(` - row [selected=invalid] `, { timeout: 1000 }).catch(e => e); expect(stripAnsi(e.message)).toContain(' attribute must be a boolean'); } }); test('integration test', async ({ page }) => { await page.setContent(`

Microsoft

Open source projects and samples from Microsoft
`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "Microsoft" - text: Open source projects and samples from Microsoft - list: - listitem: - group: Verified - listitem: - link "Sponsor" `); }); test('integration test 2', async ({ page }) => { await page.setContent(`

todos

`); await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "todos" - textbox "What needs to be done?" `); }); test('expected formatter', async ({ page }) => { await page.setContent(`

todos

`); const error = await expect(page.locator('body')).toMatchAriaSnapshot(` - heading "todos" - textbox "Wrong text" `, { timeout: 1 }).catch(e => e); expect(stripAnsi(error.message)).toContain(` Locator: locator('body') - Expected - 2 + Received string + 3 - - heading "todos" - - textbox "Wrong text" + - banner: + - heading "todos" [level=1] + - textbox "What needs to be done?"`); });