/** * Copyright 2020 Google Inc. 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 expect from 'expect'; import { getTestState, setupTestBrowserHooks, setupTestPageAndContextHooks, describeChromeOnly, } from './mocha-utils'; // eslint-disable-line import/extensions import { ElementHandle } from '../lib/cjs/puppeteer/common/JSHandle.js'; describeChromeOnly('AriaQueryHandler', () => { setupTestBrowserHooks(); setupTestPageAndContextHooks(); describe('parseAriaSelector', () => { beforeEach(async () => { const { page } = getTestState(); await page.setContent( '' ); }); it('should find button', async () => { const { page } = getTestState(); const expectFound = async (button: ElementHandle) => { const id = await button.evaluate((button: Element) => button.id); expect(id).toBe('btn'); }; let button = await page.$( 'aria/Submit button and some spaces[role="button"]' ); await expectFound(button); button = await page.$( 'aria/ Submit button and some spaces[role="button"]' ); await expectFound(button); button = await page.$( 'aria/Submit button and some spaces [role="button"]' ); await expectFound(button); button = await page.$( 'aria/Submit button and some spaces [ role = "button" ] ' ); await expectFound(button); button = await page.$( 'aria/[role="button"]Submit button and some spaces' ); await expectFound(button); button = await page.$( 'aria/Submit button [role="button"]and some spaces' ); await expectFound(button); button = await page.$( 'aria/[name=" Submit button and some spaces"][role="button"]' ); await expectFound(button); button = await page.$( 'aria/ignored[name="Submit button and some spaces"][role="button"]' ); await expectFound(button); }); }); describe('queryOne', () => { it('should find button by role', async () => { const { page } = getTestState(); await page.setContent( '
' ); const button = await page.$('aria/[role="button"]'); const id = await button.evaluate((button: Element) => button.id); expect(id).toBe('btn'); }); it('should find button by name and role', async () => { const { page } = getTestState(); await page.setContent( '' ); const button = await page.$('aria/Submit[role="button"]'); const id = await button.evaluate((button: Element) => button.id); expect(id).toBe('btn'); }); it('should find first matching element', async () => { const { page } = getTestState(); await page.setContent( ` ` ); const div = await page.$('aria/menu div'); const id = await div.evaluate((div: Element) => div.id); expect(id).toBe('mnu1'); }); it('should find by name', async () => { const { page } = getTestState(); await page.setContent( `