LEFT | RIGHT |
1 # Buildtools unit tests | 1 # Buildtools unit tests |
2 | 2 |
3 ## Introduction | 3 ## Introduction |
4 | 4 |
5 Unit tests for buildtools, using the pytest framework. | 5 Unit tests for buildtools, using the pytest framework. |
6 | 6 |
7 ## Approach | 7 ## Approach |
8 | 8 |
9 In order to test the buildtools capability of creating WebExtension-packages | 9 In order to test the buildtools capability of creating WebExtension-packages |
10 for Chrome, Edge and Firefox, an example configuration for each platform is | 10 for Chrome, Edge and Firefox, an example configuration for each platform is |
11 provided. | 11 provided. |
12 Running the tests calls the same API as the cli would, except for releases | 12 Running the tests calls the same API as the cli would, except for releases |
13 (we don't want to trigger our releaseAutomation during tests) - in this case, | 13 (we don't want to trigger our releaseAutomation during tests) - in this case, |
14 a build is manually created and verified). | 14 a build is manually created and verified). |
15 | 15 |
16 Each extension is build with different parameters, the resulting package and | 16 Each extension is build with different parameters, the resulting package and |
17 it's content is compared against provided expected results: | 17 it's content is compared against provided expected results: |
18 | 18 |
19 - Release or build-only, with or without a specific build-number (Edge) | 19 - Release or build-only, with or without a specific build-number (Edge) |
20 - Release, build-only or developement environment, with or without a specifc | 20 - Release, build-only or developement environment, with or without a specifc |
21 build-number (Chrome, Firefox), with or without a predefined signing key | 21 build-number (Chrome, Firefox), with or without a predefined signing key |
22 (Chrome) | 22 (Chrome) |
23 | 23 |
24 The expected results for each manifest are provided with the files in | 24 The expected results for each manifest are provided with the files in |
25 `expecteddata/`. | 25 `expecteddata/`. |
26 | 26 |
27 ## Test cases | 27 ## Test cases |
28 | 28 |
29 _(Covered platforms are referred to as C=Chrome, E=Edge, F=Firefox)_ | 29 _(Covered platforms are referred to as C=Chrome, E=Edge, F=Firefox.)_ |
30 | 30 |
31 - Metadata inheritance (EF) | 31 - Metadata inheritance (EF) |
32 - Correct package filename (CEF) | 32 - Correct package filename (CEF) |
33 - Printed warning about non-square icons (CF) | 33 - Printed warning about non-square icons (CEF) |
34 - Presence of JavaScript unit test files in developement environment (CF) | 34 - Presence of JavaScript unit test files in developement environment (CEF) |
35 - Absence of JavaScript unit test files in build-only or release (CF) | 35 - Absence of JavaScript unit test files in build-only or release (CEF) |
36 - Inlcusion of defined contentScripts into the manifest (CF) | 36 - Inlcusion of defined contentScripts into the manifest (CEF) |
37 - Packaging (and moving) of included icons / scripts / HTML files (CEF) | 37 - Packaging (and moving) of included icons / scripts / HTML files (CEF) |
38 - Presence of files for all configured locales (CEF) | 38 - Presence of files for all configured locales (CEF) |
39 - Correct import of translations with or without placeholders, with or without | 39 - Correct import of translations with or without placeholders, with or without |
40 access keys (CEF) | 40 access keys (CEF) |
41 - Translation presence and validity for the Chrome Web Store (C) | 41 - Translation presence and validity for the Chrome Web Store (C) |
42 - Packaging of modularized script files with webpack (CEF) | 42 - Packaging of modularized script files with webpack (CEF) |
43 - Adherence to provided build-number in the manifest (CEF) | 43 - Adherence to provided build-number in the manifest (CEF) |
44 - Other content in the manifest (CEF) | 44 - Other content in the manifest (CEF) |
45 - Correct encrypted signature of the package (C) | 45 - Correct encrypted signature of the package (C) |
46 | 46 |
(...skipping 17 matching lines...) Expand all Loading... |
64 ## Coverage | 64 ## Coverage |
65 | 65 |
66 Pytest will create a coverage report as output to the terminal, using the | 66 Pytest will create a coverage report as output to the terminal, using the |
67 pytest plugin `pytest-cov`. | 67 pytest plugin `pytest-cov`. |
68 | 68 |
69 In order to get an html report you can add `--cov-report=html` to the | 69 In order to get an html report you can add `--cov-report=html` to the |
70 pytest-command in tox.ini. | 70 pytest-command in tox.ini. |
71 | 71 |
72 For more information please refer to the | 72 For more information please refer to the |
73 [coverage documentation](https://coverage.readthedocs.io/) | 73 [coverage documentation](https://coverage.readthedocs.io/) |
LEFT | RIGHT |