|
1 | 1 | import { expect } from 'chai'; |
2 | 2 | import { loadCachedTestBed, takeScreenshot, TestBed } from '../../../puppeteer-tests/util'; |
| 3 | +import { PointLinksSkPO } from './point-links-sk_po'; |
| 4 | +import { ElementHandle } from 'puppeteer'; |
| 5 | +import { CLIPBOARD_READ_TIMEOUT_MS } from '../common/puppeteer-test-util'; |
3 | 6 |
|
4 | 7 | describe('point-links-sk', () => { |
5 | 8 | let testBed: TestBed; |
| 9 | + let pointLinksSk: ElementHandle; |
| 10 | + let pointLinksSkPO: PointLinksSkPO; |
| 11 | + |
6 | 12 | before(async () => { |
7 | 13 | testBed = await loadCachedTestBed(); |
8 | 14 | }); |
9 | 15 |
|
10 | 16 | beforeEach(async () => { |
11 | 17 | await testBed.page.goto(testBed.baseUrl); |
12 | | - await testBed.page.setViewport({ width: 400, height: 550 }); |
| 18 | + await testBed.page.setViewport({ width: 800, height: 550 }); |
| 19 | + |
| 20 | + pointLinksSk = (await testBed.page.$('point-links-sk'))!; |
| 21 | + pointLinksSkPO = new PointLinksSkPO(pointLinksSk); |
| 22 | + |
| 23 | + // Set displayUrls and displayTexts directly for the component. |
| 24 | + await pointLinksSk.evaluate( |
| 25 | + async (el: any, displayUrls, displayTexts) => { |
| 26 | + // Made async |
| 27 | + el.displayUrls = displayUrls; |
| 28 | + el.displayTexts = displayTexts; |
| 29 | + await el.renderPointLinks(); |
| 30 | + }, |
| 31 | + { |
| 32 | + V8: 'https://chromium.googlesource.com/v8/v8/+log/f052b8c4db1f08d1f8275351c047854e6ff1805f..47f420e89ec1b33dacc048d93e0317ab7fec43dd?n=1000', |
| 33 | + }, |
| 34 | + { |
| 35 | + V8: 'f052b8c4 - 47f420e8', |
| 36 | + } |
| 37 | + ); |
| 38 | + }); |
| 39 | + |
| 40 | + afterEach(async () => { |
| 41 | + // No request interception or dynamic loading to clean up. |
13 | 42 | }); |
14 | 43 |
|
15 | 44 | it('should render the demo page (smoke test)', async () => { |
16 | | - expect(await testBed.page.$$('point-links-sk')).to.have.length(2); |
| 45 | + expect(await testBed.page.$$('point-links-sk')).to.have.length(1); |
| 46 | + }); |
| 47 | + |
| 48 | + it('shows the default view', async () => { |
| 49 | + await takeScreenshot(testBed.page, 'perf', 'point-links-sk'); |
17 | 50 | }); |
18 | 51 |
|
19 | | - describe('screenshots', () => { |
20 | | - it('shows the default view', async () => { |
21 | | - await takeScreenshot(testBed.page, 'perf', 'point-links-sk'); |
| 52 | + it('copies link to clipboard', async () => { |
| 53 | + await testBed.page |
| 54 | + .browserContext() |
| 55 | + .overridePermissions(testBed.baseUrl, ['clipboard-read', 'clipboard-write']); |
| 56 | + |
| 57 | + // Wait for the component to render the links. |
| 58 | + await testBed.page.waitForSelector('md-outlined-icon-button', { visible: true }); |
| 59 | + await pointLinksSkPO.clickCopyButton(0); |
| 60 | + |
| 61 | + let clipboardText = ''; |
| 62 | + const startTime = Date.now(); |
| 63 | + // set 5 second timeout |
| 64 | + while (Date.now() - startTime < CLIPBOARD_READ_TIMEOUT_MS) { |
| 65 | + clipboardText = await testBed.page.evaluate(() => navigator.clipboard.readText()); |
| 66 | + if (clipboardText) { |
| 67 | + break; |
| 68 | + } |
| 69 | + await new Promise((r) => setTimeout(r, 100)); |
| 70 | + } |
| 71 | + expect(clipboardText).to.not.null; |
| 72 | + await takeScreenshot(testBed.page, 'point-links', 'point-links-sk'); |
| 73 | + }); |
| 74 | + |
| 75 | + it('should display the correct key and link text', async () => { |
| 76 | + await testBed.page.waitForSelector('md-outlined-icon-button', { visible: true }); |
| 77 | + |
| 78 | + const keyText = await testBed.page.evaluate(() => { |
| 79 | + const keySpan = document |
| 80 | + .querySelector('point-links-sk') |
| 81 | + ?.shadowRoot?.querySelector('#tooltip-key'); |
| 82 | + return keySpan ? keySpan.textContent?.trim() : ''; |
| 83 | + }); |
| 84 | + const linkText = await testBed.page.evaluate(() => { |
| 85 | + const linkSpan = document |
| 86 | + .querySelector('point-links-sk') |
| 87 | + ?.shadowRoot?.querySelector('#tooltip-text a'); |
| 88 | + return linkSpan ? linkSpan.textContent?.trim() : ''; |
22 | 89 | }); |
| 90 | + |
| 91 | + expect(keyText).to.not.null; |
| 92 | + expect(linkText).to.not.null; |
| 93 | + await takeScreenshot(testBed.page, 'point-links', 'point-links-sk'); |
23 | 94 | }); |
24 | 95 | }); |
0 commit comments