Skip to content

Commit 0adb773

Browse files
committed
feat: release snapshot
1 parent f3ad4d8 commit 0adb773

4 files changed

Lines changed: 136 additions & 124 deletions

File tree

.github/workflows/dev.yml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,20 @@ jobs:
8484
php -S 0.0.0.0:8899 -t $GITHUB_WORKSPACE/tests/simple-server &
8585
sleep 5
8686
npm run test:e2e
87-
# - name: Publish snapshot
88-
# env:
89-
# AMO_KEY: ${{ secrets.AMO_KEY }}
90-
# AMO_SECRET: ${{ secrets.AMO_SECRET }}
91-
# CRX_PRIV_KEY: ${{ secrets.CRX_PRIV_KEY }}
92-
# CRX_PRIV_KEY_V3: ${{ secrets.CRX_PRIV_KEY_V3 }}
93-
# PACK_PLATFORM: xpi,crx
94-
# run: npm run pack
95-
# - name: Upload snapshot release
96-
# uses: actions/upload-artifact@v3
97-
# with:
98-
# name: release
99-
# path: |
100-
# temp/release
101-
# !temp/release/*-id.txt
87+
- name: Publish snapshot
88+
env:
89+
AMO_KEY: ${{ secrets.AMO_KEY }}
90+
AMO_SECRET: ${{ secrets.AMO_SECRET }}
91+
CRX_PRIV_KEY: ${{ secrets.CRX_PRIV_KEY }}
92+
PACK_PLATFORM: xpi,crx
93+
run: npm run pack
94+
- name: Upload snapshot release
95+
uses: actions/upload-artifact@v3
96+
with:
97+
name: release
98+
path: |
99+
temp/release
100+
!temp/release/*-id.txt
102101
103102
sync-locale:
104103
needs: check_changes

scripts/pack-utils/xpi.mjs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import { rename, writeFile } from 'fs/promises';
2-
import { getVersion, join } from '../config.mjs';
32
import { signAddon } from 'sign-addon';
3+
import { getOutputFile, getVersion, join } from '../config.mjs';
44

5-
async function packXpi(sourcePath, zipPath, releasePath, browserConfig, itemConfig) {
5+
async function packXpi(
6+
sourcePath,
7+
zipPath,
8+
releasePath,
9+
browserConfig,
10+
itemConfig,
11+
) {
612
if (!process.env.AMO_KEY) {
713
return Promise.reject(new Error('AMO_KEY not found'));
814
}
@@ -16,7 +22,7 @@ async function packXpi(sourcePath, zipPath, releasePath, browserConfig, itemConf
1622
apiKey: process.env.AMO_KEY,
1723
apiSecret: process.env.AMO_SECRET,
1824
id: itemConfig.id,
19-
downloadDir: outputDir,
25+
downloadDir: releasePath,
2026
disableProgressBar: true,
2127
});
2228
if (!result.success) {
@@ -28,8 +34,8 @@ async function packXpi(sourcePath, zipPath, releasePath, browserConfig, itemConf
2834
}
2935
console.log(`Downloaded signed addon: ${res.join(', ')}`);
3036
const fileName = getOutputFile(itemConfig.browser, _version, 'xpi');
31-
const out = join(outputDir, fileName);
32-
const idFile = join(outputDir, `${fileName}-id.txt`);
37+
const out = join(releasePath, fileName);
38+
const idFile = join(releasePath, `${fileName}-id.txt`);
3339
// Move download file to output dir
3440
await rename(res[0], out);
3541
await writeFile(idFile, itemConfig.id);

tests/e2e/browser.spec.mjs

Lines changed: 105 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -25,96 +25,108 @@ afterAll(async () => {
2525
await cleanup();
2626
});
2727

28-
test('Modify Request Header', async () =>
29-
runTest(['chrome_v3', 'firefox_v2', 'firefox_v3'], async browser => {
30-
const key = String(Math.random()).replace('.', '');
31-
32-
const { remove } = await saveRule(browser.popup, {
33-
name: 'test modify request header',
34-
ruleType: 'modifySendHeader',
35-
pattern: '^' + testServer,
36-
matchType: 'regexp',
37-
isFunction: false,
38-
enable: true,
39-
action: {
40-
name: 'X-Test-Header',
41-
value: key,
42-
},
43-
});
44-
45-
const header = await getHeader(browser.browser);
46-
47-
expect(header['X_TEST_HEADER']).toBe(key);
48-
49-
await remove();
50-
}));
51-
52-
test('Disable rule', async () =>
53-
runTest(['chrome_v3', 'firefox_v2', 'firefox_v3'], async browser => {
54-
const key = String(Math.random()).replace('.', '');
55-
56-
const { remove } = await saveRule(browser.popup, {
57-
name: 'test disable rule',
58-
ruleType: 'modifySendHeader',
59-
pattern: '^' + testServer,
60-
matchType: 'regexp',
61-
isFunction: false,
62-
enable: false,
63-
action: {
64-
name: 'X-Test-Header',
65-
value: key,
66-
},
67-
});
68-
69-
const header = await getHeader(browser.browser);
70-
71-
expect(header['X_TEST_HEADER']).toBeUndefined();
72-
73-
await remove();
74-
}));
75-
76-
test('Remove Response Header', async () =>
77-
runTest(['chrome_v3', 'firefox_v2', 'firefox_v3'], async browser => {
78-
const { remove } = await saveRule(browser.popup, {
79-
name: 'test remove request header',
80-
ruleType: 'modifyReceiveHeader',
81-
pattern: '^' + testServer,
82-
matchType: 'regexp',
83-
isFunction: false,
84-
enable: true,
85-
action: {
86-
name: 'content-security-policy',
87-
value: '_header_editor_remove_',
88-
},
89-
});
90-
91-
const value = await getPageValue(browser.browser, 'csp.php');
92-
93-
expect(value).toBe('Executed');
94-
95-
await remove();
96-
}));
97-
98-
test('Modify Response Header', async () =>
99-
runTest(['chrome_v3', 'firefox_v2', 'firefox_v3'], async browser => {
100-
const key = String(Math.random()).replace('.', '');
101-
102-
const { remove } = await saveRule(browser.popup, {
103-
name: 'test modify request header',
104-
ruleType: 'modifyReceiveHeader',
105-
pattern: '^' + testServer,
106-
matchType: 'regexp',
107-
isFunction: false,
108-
enable: true,
109-
action: {
110-
name: 'content-security-policy',
111-
value: `script-src 'self' 'nonce-${key}'`,
112-
},
113-
});
114-
115-
const value = await getPageValue(browser.browser, 'csp.php?nonce=' + key);
116-
117-
expect(value).toBe(key);
118-
119-
await remove();
120-
}));
28+
test.each([['chrome_v3'], ['firefox_v2'], ['firefox_v3']])(
29+
'[%s] - Modify Request Header',
30+
async browserKey =>
31+
runTest(browserKey, async browser => {
32+
const key = String(Math.random()).replace('.', '');
33+
34+
const { remove } = await saveRule(browser.popup, {
35+
name: 'test modify request header',
36+
ruleType: 'modifySendHeader',
37+
pattern: '^' + testServer,
38+
matchType: 'regexp',
39+
isFunction: false,
40+
enable: true,
41+
action: {
42+
name: 'X-Test-Header',
43+
value: key,
44+
},
45+
});
46+
47+
const header = await getHeader(browser.browser);
48+
49+
expect(header['X_TEST_HEADER']).toBe(key);
50+
51+
await remove();
52+
}),
53+
);
54+
55+
test.each([['chrome_v3'], ['firefox_v2'], ['firefox_v3']])(
56+
'[%s] - Disable rule',
57+
async browserKey =>
58+
runTest(browserKey, async browser => {
59+
const key = String(Math.random()).replace('.', '');
60+
61+
const { remove } = await saveRule(browser.popup, {
62+
name: 'test disable rule',
63+
ruleType: 'modifySendHeader',
64+
pattern: '^' + testServer,
65+
matchType: 'regexp',
66+
isFunction: false,
67+
enable: false,
68+
action: {
69+
name: 'X-Test-Header',
70+
value: key,
71+
},
72+
});
73+
74+
const header = await getHeader(browser.browser);
75+
76+
expect(header['X_TEST_HEADER']).toBeUndefined();
77+
78+
await remove();
79+
}),
80+
);
81+
82+
test.each([['chrome_v3'], ['firefox_v2'], ['firefox_v3']])(
83+
'[%s] - Remove Response Header',
84+
async browserKey =>
85+
runTest(browserKey, async browser => {
86+
const { remove } = await saveRule(browser.popup, {
87+
name: 'test remove request header',
88+
ruleType: 'modifyReceiveHeader',
89+
pattern: '^' + testServer,
90+
matchType: 'regexp',
91+
isFunction: false,
92+
enable: true,
93+
action: {
94+
name: 'content-security-policy',
95+
value: '_header_editor_remove_',
96+
},
97+
});
98+
99+
const value = await getPageValue(browser.browser, 'csp.php');
100+
101+
expect(value).toBe('Executed');
102+
103+
await remove();
104+
}),
105+
);
106+
107+
test.each([['chrome_v3'], ['firefox_v2'], ['firefox_v3']])(
108+
'[%s] - Modify Response Header',
109+
async browserKey =>
110+
runTest(browserKey, async browser => {
111+
const key = String(Math.random()).replace('.', '');
112+
113+
const { remove } = await saveRule(browser.popup, {
114+
name: 'test modify request header',
115+
ruleType: 'modifyReceiveHeader',
116+
pattern: '^' + testServer,
117+
matchType: 'regexp',
118+
isFunction: false,
119+
enable: true,
120+
action: {
121+
name: 'content-security-policy',
122+
value: `script-src 'self' 'nonce-${key}'`,
123+
},
124+
});
125+
126+
const value = await getPageValue(browser.browser, 'csp.php?nonce=' + key);
127+
128+
expect(value).toBe(key);
129+
130+
await remove();
131+
}),
132+
);

tests/e2e/utils.mjs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -192,16 +192,12 @@ export async function waitTestServer() {
192192
}
193193
}
194194

195-
export function runTest(targets, cb) {
196-
return Promise.all(
197-
targets.map(async target => {
198-
const client = browserList[target];
199-
if (!client) {
200-
return Promise.resolve();
201-
}
202-
await cb(client);
203-
}),
204-
);
195+
export function runTest(browserKey, cb) {
196+
const client = browserList[browserKey];
197+
if (!client) {
198+
return Promise.resolve();
199+
}
200+
return cb(client);
205201
}
206202

207203
export async function saveRule(popup, rule) {
@@ -214,7 +210,6 @@ export async function saveRule(popup, rule) {
214210
const resp = await popup.evaluate(
215211
`${apiPrefix}.runtime.sendMessage(${JSON.stringify(action)})`,
216212
);
217-
console.log('resp', isFirefox, resp);
218213
let tabName = '';
219214
switch (rule.ruleType) {
220215
case 'cancel':

0 commit comments

Comments
 (0)