|
1 | 1 | import assert from 'node:assert'; |
2 | 2 | import { setTimeout as sleep } from 'node:timers/promises'; |
3 | 3 | import { getTask, runTask, saveTask } from './scripts/api.mjs'; |
4 | | -import { runTest } from './scripts/browser.mjs'; |
| 4 | +import { runInBrowsers, runTest } from './scripts/browser.mjs'; |
5 | 5 | import { randStr, testServer } from './scripts/utils.mjs'; |
6 | 6 |
|
7 | | -describe('Run task', () => |
8 | | - runTest( |
9 | | - ['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'], |
10 | | - async browser => { |
11 | | - const key = `task_${randStr()}`; |
12 | | - const value = randStr(); |
| 7 | +describe('Fetch task', () => { |
| 8 | + const key = `task_${randStr()}`; |
| 9 | + const value = randStr(); |
| 10 | + const removes = []; |
| 11 | + beforeAll(() => |
| 12 | + runInBrowsers( |
| 13 | + ['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'], |
| 14 | + async browser => { |
| 15 | + const res = await saveTask(browser.popup, { |
| 16 | + key, |
| 17 | + name: 'test task 1', |
| 18 | + isFunction: false, |
| 19 | + fetch: { |
| 20 | + url: `${testServer}mock-json.php?value=${value}`, |
| 21 | + method: 'GET', |
| 22 | + responseType: 'json', |
| 23 | + }, |
| 24 | + }); |
| 25 | + removes.push(res.remove); |
| 26 | + }, |
| 27 | + ), |
| 28 | + ); |
| 29 | + afterAll(() => removes.forEach(remove => remove())); |
13 | 30 |
|
14 | | - const { remove } = await saveTask(browser.popup, { |
15 | | - key, |
16 | | - name: 'test task 1', |
17 | | - isFunction: false, |
18 | | - fetch: { |
19 | | - url: `${testServer}mock-json.php?value=${value}`, |
20 | | - method: 'GET', |
21 | | - responseType: 'json', |
22 | | - }, |
23 | | - }); |
24 | | - |
25 | | - try { |
| 31 | + describe('Get task result', () => |
| 32 | + runTest( |
| 33 | + ['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'], |
| 34 | + async browser => { |
26 | 35 | await runTask(browser.popup, key); |
27 | 36 | await sleep(100); |
28 | 37 | const result = await getTask(browser.popup, key); |
29 | 38 | assert.strictEqual(result.lastRun.status, 'done'); |
30 | 39 | assert.deepStrictEqual(result.lastRun.result, { value }); |
31 | | - } finally { |
32 | | - await remove(); |
33 | | - } |
34 | | - }, |
35 | | - )); |
| 40 | + }, |
| 41 | + )); |
| 42 | + |
| 43 | + describe('Use in redirect', () => |
| 44 | + runTest( |
| 45 | + ['edge_v2', 'chrome_v3', 'firefox_v2', 'firefox_v3'], |
| 46 | + async browser => { |
| 47 | + const { remove } = await saveRule(browser.popup, { |
| 48 | + name: 'test redirect', |
| 49 | + ruleType: 'redirect', |
| 50 | + pattern: `^${testServer}get(\\d+)$`, |
| 51 | + matchType: 'regexp', |
| 52 | + isFunction: false, |
| 53 | + enable: true, |
| 54 | + to: `${testServer}get-query.php?value=\${TASK.${key}.value}`, |
| 55 | + }); |
| 56 | + |
| 57 | + try { |
| 58 | + const query = JSON.parse( |
| 59 | + await getPageValue(browser.browser, `get123`), |
| 60 | + ); |
| 61 | + assert.strictEqual(query.value, value); |
| 62 | + } finally { |
| 63 | + await remove(); |
| 64 | + } |
| 65 | + }, |
| 66 | + )); |
| 67 | +}); |
0 commit comments