├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── androidReleaseTemplate.md
│ ├── componentReleases.md
│ ├── desktopReleaseTemplate.md
│ ├── iosReleaseTemplate.md
│ ├── qaResourceOther.md
│ ├── qaResourcesAndroid.md
│ └── qaResourcesDesktop.md
└── renovate.json
├── Crypto Wallet Dev Components
└── 1.0.25
│ ├── Brave-Browser - 1.0.25 Dev Linux.tar.gz
│ ├── Brave-Browser -1.0.25 Dev Win.zip
│ └── Brave-Browser-Nightly - 1.0.25 Dev macOS.zip
├── LICENSE
├── README.md
├── SampleBookmarks
├── brave_sorted_1000.html
├── brave_sorted_3000.html
├── brave_sorted_4000.html
└── brave_sorted_5000.html
├── WikiTemplate
├── Android
│ ├── wikitemplate-android.md
│ └── wikitemplate-minorCRbumpAndroid.md
├── Crypto
│ ├── wikitemplate-cryptoAndroid.md
│ ├── wikitemplate-cryptoDesktop.md
│ └── wikitemplate-cryptoiOS.md
├── Desktop
│ ├── Major_CR_Bump
│ │ └── wikitemplate-majorChromiumBumpUpgrades.md
│ ├── Minor_CR_Bump
│ │ ├── wikitemplate-minorCRbump-macOS-arm64.md
│ │ ├── wikitemplate-minorCRbump-macOS-x64.md
│ │ └── wikitemplate-minorCRbumpDesktop.md
│ ├── wikitemplate-macOS-arm64.md
│ ├── wikitemplate-macOS-x64.md
│ └── wikitemplate.md
├── Goupdater
│ └── wikitemplate-goupdate.md
├── IPFS
│ └── wikitemplate-IPFS.md
├── Tor
│ ├── wikitemplate-tor-Linux.md
│ ├── wikitemplate-tor-Windows.md
│ ├── wikitemplate-tor-macOS(Intel).md
│ ├── wikitemplate-tor-macOS(arm64).md
│ └── wikitemplate-tor.md
└── iOS
│ └── wikitemplate-ios.md
├── brave_testrun_generator.py
├── braveautogen-pre-release-only.py
├── changelog.py
└── testlinks.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 | [*]
8 | indent_style = space
9 | indent_size = 2
10 | trim_trailing_whitespace = true
11 | end_of_line = lf
12 | charset = utf-8
13 | insert_final_newline = true
14 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/androidReleaseTemplate.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Android Release
3 | about: 'Template for Android releases'
4 | title: ""
5 | labels: OS/Android
6 | assignees: ''
7 | ---
8 |
9 | ###
`[add release number]`
10 |
11 | #### Release Date/Target:
12 |
13 | * Release Date:
14 |
15 | #### Summary:
16 |
17 | Includes the following features/fixes:
18 |
19 | *
20 | *
21 |
22 | **Milestone:**
23 |
24 |
25 | **Current Progress:**
26 |
27 | * ARM -->
28 | * Tablet -->
29 | * x86 -->
30 |
31 | **Manual Passes:**
32 |
33 | * ARM -->
34 | * Tablet -->
35 | * x86 -->
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/componentReleases.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Component Release
3 | about: 'Template for component releases'
4 | title: ""
5 | labels: OS/Desktop
6 | assignees: ''
7 | ---
8 |
9 | ###
`[add release/component number]`
10 |
11 | #### Release Date/Target:
12 |
13 | * Release Date:
14 |
15 | #### Summary:
16 |
17 |
18 | **Milestone:**
19 |
20 |
21 | **Current Progress:**
22 |
23 | * macOS -->
24 | * Win-->
25 | * Linux -->
26 |
27 | **Manual Passes:**
28 |
29 | * macOS x64 -->
30 | * Win -->
31 | * Linux -->
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/desktopReleaseTemplate.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Desktop Release
3 | about: 'Template for Desktop releases'
4 | title: ""
5 | labels: OS/Desktop
6 | assignees: ''
7 | ---
8 |
9 | ###
`[add release number]`
10 |
11 | #### Release Date/Target:
12 |
13 | * Release Date:
14 |
15 | #### Summary:
16 |
17 | Includes the following features/fixes:
18 |
19 | *
20 | *
21 |
22 | **Milestone:**
23 |
24 |
25 | **Current Progress:**
26 |
27 | * macOS -->
28 | * Win-->
29 | * Linux -->
30 |
31 | **Manual Passes:**
32 |
33 | * macOS x64 -->
34 | * macOS Arm64 -->
35 | * Win -->
36 | * Linux -->
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/iosReleaseTemplate.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: iOS Release
3 | about: 'Template for iOS releases'
4 | title: ""
5 | labels: OS/iOS
6 | assignees: ''
7 | ---
8 |
9 | ###
`[add release number]`
10 |
11 | #### Release Date/Target:
12 |
13 | * Release Date:
14 |
15 | #### Summary:
16 |
17 |
18 | **Milestone:**
19 |
20 |
21 | **Current Progress:**
22 |
23 | * iOS 13-->
24 | * iOS 14 -->
25 |
26 | **Manual Passes:**
27 |
28 | * iOS 13-->
29 | * iOS 14 -->
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/qaResourceOther.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Other Request
3 | about: 'Work that is not covered by the other templates'
4 | title: ""
5 | labels:
6 | assignees: ''
7 | ---
8 |
9 | #### Release Date/Target:
10 |
11 | * Release Date/Completion Timing:
12 |
13 | #### Summary:
14 |
15 | #### Related GH issues/Documentation:
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/qaResourcesAndroid.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Requesting QA Resources Android
3 | about: 'Template for requesting QA resources'
4 | title: ""
5 | labels: OS/Android
6 | assignees: ''
7 | ---
8 |
9 | #### Release Date/Target:
10 |
11 |
12 | * Release Date:
13 |
14 | #### Summary:
15 |
16 |
17 | #### Related GH issues/Documentation:
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/qaResourcesDesktop.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Requesting QA Resources Desktop
3 | about: 'Template for requesting QA resources'
4 | title: ""
5 | labels: OS/Desktop
6 | assignees: ''
7 | ---
8 |
9 | #### Release Date/Target:
10 |
11 |
12 | * Release Date:
13 |
14 | #### Summary:
15 |
16 |
17 | #### Related GH issues/Documentation:
18 |
--------------------------------------------------------------------------------
/.github/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "local>brave/renovate-config"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Crypto Wallet Dev Components/1.0.25/Brave-Browser - 1.0.25 Dev Linux.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brave/qa-resources/c8d62f38c8325c3e7682a0c4c9e1d923ba9bd698/Crypto Wallet Dev Components/1.0.25/Brave-Browser - 1.0.25 Dev Linux.tar.gz
--------------------------------------------------------------------------------
/Crypto Wallet Dev Components/1.0.25/Brave-Browser -1.0.25 Dev Win.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brave/qa-resources/c8d62f38c8325c3e7682a0c4c9e1d923ba9bd698/Crypto Wallet Dev Components/1.0.25/Brave-Browser -1.0.25 Dev Win.zip
--------------------------------------------------------------------------------
/Crypto Wallet Dev Components/1.0.25/Brave-Browser-Nightly - 1.0.25 Dev macOS.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brave/qa-resources/c8d62f38c8325c3e7682a0c4c9e1d923ba9bd698/Crypto Wallet Dev Components/1.0.25/Brave-Browser-Nightly - 1.0.25 Dev macOS.zip
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Mozilla Public License Version 2.0
2 | ==================================
3 |
4 | 1. Definitions
5 | --------------
6 |
7 | 1.1. "Contributor"
8 | means each individual or legal entity that creates, contributes to
9 | the creation of, or owns Covered Software.
10 |
11 | 1.2. "Contributor Version"
12 | means the combination of the Contributions of others (if any) used
13 | by a Contributor and that particular Contributor's Contribution.
14 |
15 | 1.3. "Contribution"
16 | means Covered Software of a particular Contributor.
17 |
18 | 1.4. "Covered Software"
19 | means Source Code Form to which the initial Contributor has attached
20 | the notice in Exhibit A, the Executable Form of such Source Code
21 | Form, and Modifications of such Source Code Form, in each case
22 | including portions thereof.
23 |
24 | 1.5. "Incompatible With Secondary Licenses"
25 | means
26 |
27 | (a) that the initial Contributor has attached the notice described
28 | in Exhibit B to the Covered Software; or
29 |
30 | (b) that the Covered Software was made available under the terms of
31 | version 1.1 or earlier of the License, but not also under the
32 | terms of a Secondary License.
33 |
34 | 1.6. "Executable Form"
35 | means any form of the work other than Source Code Form.
36 |
37 | 1.7. "Larger Work"
38 | means a work that combines Covered Software with other material, in
39 | a separate file or files, that is not Covered Software.
40 |
41 | 1.8. "License"
42 | means this document.
43 |
44 | 1.9. "Licensable"
45 | means having the right to grant, to the maximum extent possible,
46 | whether at the time of the initial grant or subsequently, any and
47 | all of the rights conveyed by this License.
48 |
49 | 1.10. "Modifications"
50 | means any of the following:
51 |
52 | (a) any file in Source Code Form that results from an addition to,
53 | deletion from, or modification of the contents of Covered
54 | Software; or
55 |
56 | (b) any new file in Source Code Form that contains any Covered
57 | Software.
58 |
59 | 1.11. "Patent Claims" of a Contributor
60 | means any patent claim(s), including without limitation, method,
61 | process, and apparatus claims, in any patent Licensable by such
62 | Contributor that would be infringed, but for the grant of the
63 | License, by the making, using, selling, offering for sale, having
64 | made, import, or transfer of either its Contributions or its
65 | Contributor Version.
66 |
67 | 1.12. "Secondary License"
68 | means either the GNU General Public License, Version 2.0, the GNU
69 | Lesser General Public License, Version 2.1, the GNU Affero General
70 | Public License, Version 3.0, or any later versions of those
71 | licenses.
72 |
73 | 1.13. "Source Code Form"
74 | means the form of the work preferred for making modifications.
75 |
76 | 1.14. "You" (or "Your")
77 | means an individual or a legal entity exercising rights under this
78 | License. For legal entities, "You" includes any entity that
79 | controls, is controlled by, or is under common control with You. For
80 | purposes of this definition, "control" means (a) the power, direct
81 | or indirect, to cause the direction or management of such entity,
82 | whether by contract or otherwise, or (b) ownership of more than
83 | fifty percent (50%) of the outstanding shares or beneficial
84 | ownership of such entity.
85 |
86 | 2. License Grants and Conditions
87 | --------------------------------
88 |
89 | 2.1. Grants
90 |
91 | Each Contributor hereby grants You a world-wide, royalty-free,
92 | non-exclusive license:
93 |
94 | (a) under intellectual property rights (other than patent or trademark)
95 | Licensable by such Contributor to use, reproduce, make available,
96 | modify, display, perform, distribute, and otherwise exploit its
97 | Contributions, either on an unmodified basis, with Modifications, or
98 | as part of a Larger Work; and
99 |
100 | (b) under Patent Claims of such Contributor to make, use, sell, offer
101 | for sale, have made, import, and otherwise transfer either its
102 | Contributions or its Contributor Version.
103 |
104 | 2.2. Effective Date
105 |
106 | The licenses granted in Section 2.1 with respect to any Contribution
107 | become effective for each Contribution on the date the Contributor first
108 | distributes such Contribution.
109 |
110 | 2.3. Limitations on Grant Scope
111 |
112 | The licenses granted in this Section 2 are the only rights granted under
113 | this License. No additional rights or licenses will be implied from the
114 | distribution or licensing of Covered Software under this License.
115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a
116 | Contributor:
117 |
118 | (a) for any code that a Contributor has removed from Covered Software;
119 | or
120 |
121 | (b) for infringements caused by: (i) Your and any other third party's
122 | modifications of Covered Software, or (ii) the combination of its
123 | Contributions with other software (except as part of its Contributor
124 | Version); or
125 |
126 | (c) under Patent Claims infringed by Covered Software in the absence of
127 | its Contributions.
128 |
129 | This License does not grant any rights in the trademarks, service marks,
130 | or logos of any Contributor (except as may be necessary to comply with
131 | the notice requirements in Section 3.4).
132 |
133 | 2.4. Subsequent Licenses
134 |
135 | No Contributor makes additional grants as a result of Your choice to
136 | distribute the Covered Software under a subsequent version of this
137 | License (see Section 10.2) or under the terms of a Secondary License (if
138 | permitted under the terms of Section 3.3).
139 |
140 | 2.5. Representation
141 |
142 | Each Contributor represents that the Contributor believes its
143 | Contributions are its original creation(s) or it has sufficient rights
144 | to grant the rights to its Contributions conveyed by this License.
145 |
146 | 2.6. Fair Use
147 |
148 | This License is not intended to limit any rights You have under
149 | applicable copyright doctrines of fair use, fair dealing, or other
150 | equivalents.
151 |
152 | 2.7. Conditions
153 |
154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155 | in Section 2.1.
156 |
157 | 3. Responsibilities
158 | -------------------
159 |
160 | 3.1. Distribution of Source Form
161 |
162 | All distribution of Covered Software in Source Code Form, including any
163 | Modifications that You create or to which You contribute, must be under
164 | the terms of this License. You must inform recipients that the Source
165 | Code Form of the Covered Software is governed by the terms of this
166 | License, and how they can obtain a copy of this License. You may not
167 | attempt to alter or restrict the recipients' rights in the Source Code
168 | Form.
169 |
170 | 3.2. Distribution of Executable Form
171 |
172 | If You distribute Covered Software in Executable Form then:
173 |
174 | (a) such Covered Software must also be made available in Source Code
175 | Form, as described in Section 3.1, and You must inform recipients of
176 | the Executable Form how they can obtain a copy of such Source Code
177 | Form by reasonable means in a timely manner, at a charge no more
178 | than the cost of distribution to the recipient; and
179 |
180 | (b) You may distribute such Executable Form under the terms of this
181 | License, or sublicense it under different terms, provided that the
182 | license for the Executable Form does not attempt to limit or alter
183 | the recipients' rights in the Source Code Form under this License.
184 |
185 | 3.3. Distribution of a Larger Work
186 |
187 | You may create and distribute a Larger Work under terms of Your choice,
188 | provided that You also comply with the requirements of this License for
189 | the Covered Software. If the Larger Work is a combination of Covered
190 | Software with a work governed by one or more Secondary Licenses, and the
191 | Covered Software is not Incompatible With Secondary Licenses, this
192 | License permits You to additionally distribute such Covered Software
193 | under the terms of such Secondary License(s), so that the recipient of
194 | the Larger Work may, at their option, further distribute the Covered
195 | Software under the terms of either this License or such Secondary
196 | License(s).
197 |
198 | 3.4. Notices
199 |
200 | You may not remove or alter the substance of any license notices
201 | (including copyright notices, patent notices, disclaimers of warranty,
202 | or limitations of liability) contained within the Source Code Form of
203 | the Covered Software, except that You may alter any license notices to
204 | the extent required to remedy known factual inaccuracies.
205 |
206 | 3.5. Application of Additional Terms
207 |
208 | You may choose to offer, and to charge a fee for, warranty, support,
209 | indemnity or liability obligations to one or more recipients of Covered
210 | Software. However, You may do so only on Your own behalf, and not on
211 | behalf of any Contributor. You must make it absolutely clear that any
212 | such warranty, support, indemnity, or liability obligation is offered by
213 | You alone, and You hereby agree to indemnify every Contributor for any
214 | liability incurred by such Contributor as a result of warranty, support,
215 | indemnity or liability terms You offer. You may include additional
216 | disclaimers of warranty and limitations of liability specific to any
217 | jurisdiction.
218 |
219 | 4. Inability to Comply Due to Statute or Regulation
220 | ---------------------------------------------------
221 |
222 | If it is impossible for You to comply with any of the terms of this
223 | License with respect to some or all of the Covered Software due to
224 | statute, judicial order, or regulation then You must: (a) comply with
225 | the terms of this License to the maximum extent possible; and (b)
226 | describe the limitations and the code they affect. Such description must
227 | be placed in a text file included with all distributions of the Covered
228 | Software under this License. Except to the extent prohibited by statute
229 | or regulation, such description must be sufficiently detailed for a
230 | recipient of ordinary skill to be able to understand it.
231 |
232 | 5. Termination
233 | --------------
234 |
235 | 5.1. The rights granted under this License will terminate automatically
236 | if You fail to comply with any of its terms. However, if You become
237 | compliant, then the rights granted under this License from a particular
238 | Contributor are reinstated (a) provisionally, unless and until such
239 | Contributor explicitly and finally terminates Your grants, and (b) on an
240 | ongoing basis, if such Contributor fails to notify You of the
241 | non-compliance by some reasonable means prior to 60 days after You have
242 | come back into compliance. Moreover, Your grants from a particular
243 | Contributor are reinstated on an ongoing basis if such Contributor
244 | notifies You of the non-compliance by some reasonable means, this is the
245 | first time You have received notice of non-compliance with this License
246 | from such Contributor, and You become compliant prior to 30 days after
247 | Your receipt of the notice.
248 |
249 | 5.2. If You initiate litigation against any entity by asserting a patent
250 | infringement claim (excluding declaratory judgment actions,
251 | counter-claims, and cross-claims) alleging that a Contributor Version
252 | directly or indirectly infringes any patent, then the rights granted to
253 | You by any and all Contributors for the Covered Software under Section
254 | 2.1 of this License shall terminate.
255 |
256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257 | end user license agreements (excluding distributors and resellers) which
258 | have been validly granted by You or Your distributors under this License
259 | prior to termination shall survive termination.
260 |
261 | ************************************************************************
262 | * *
263 | * 6. Disclaimer of Warranty *
264 | * ------------------------- *
265 | * *
266 | * Covered Software is provided under this License on an "as is" *
267 | * basis, without warranty of any kind, either expressed, implied, or *
268 | * statutory, including, without limitation, warranties that the *
269 | * Covered Software is free of defects, merchantable, fit for a *
270 | * particular purpose or non-infringing. The entire risk as to the *
271 | * quality and performance of the Covered Software is with You. *
272 | * Should any Covered Software prove defective in any respect, You *
273 | * (not any Contributor) assume the cost of any necessary servicing, *
274 | * repair, or correction. This disclaimer of warranty constitutes an *
275 | * essential part of this License. No use of any Covered Software is *
276 | * authorized under this License except under this disclaimer. *
277 | * *
278 | ************************************************************************
279 |
280 | ************************************************************************
281 | * *
282 | * 7. Limitation of Liability *
283 | * -------------------------- *
284 | * *
285 | * Under no circumstances and under no legal theory, whether tort *
286 | * (including negligence), contract, or otherwise, shall any *
287 | * Contributor, or anyone who distributes Covered Software as *
288 | * permitted above, be liable to You for any direct, indirect, *
289 | * special, incidental, or consequential damages of any character *
290 | * including, without limitation, damages for lost profits, loss of *
291 | * goodwill, work stoppage, computer failure or malfunction, or any *
292 | * and all other commercial damages or losses, even if such party *
293 | * shall have been informed of the possibility of such damages. This *
294 | * limitation of liability shall not apply to liability for death or *
295 | * personal injury resulting from such party's negligence to the *
296 | * extent applicable law prohibits such limitation. Some *
297 | * jurisdictions do not allow the exclusion or limitation of *
298 | * incidental or consequential damages, so this exclusion and *
299 | * limitation may not apply to You. *
300 | * *
301 | ************************************************************************
302 |
303 | 8. Litigation
304 | -------------
305 |
306 | Any litigation relating to this License may be brought only in the
307 | courts of a jurisdiction where the defendant maintains its principal
308 | place of business and such litigation shall be governed by laws of that
309 | jurisdiction, without reference to its conflict-of-law provisions.
310 | Nothing in this Section shall prevent a party's ability to bring
311 | cross-claims or counter-claims.
312 |
313 | 9. Miscellaneous
314 | ----------------
315 |
316 | This License represents the complete agreement concerning the subject
317 | matter hereof. If any provision of this License is held to be
318 | unenforceable, such provision shall be reformed only to the extent
319 | necessary to make it enforceable. Any law or regulation which provides
320 | that the language of a contract shall be construed against the drafter
321 | shall not be used to construe this License against a Contributor.
322 |
323 | 10. Versions of the License
324 | ---------------------------
325 |
326 | 10.1. New Versions
327 |
328 | Mozilla Foundation is the license steward. Except as provided in Section
329 | 10.3, no one other than the license steward has the right to modify or
330 | publish new versions of this License. Each version will be given a
331 | distinguishing version number.
332 |
333 | 10.2. Effect of New Versions
334 |
335 | You may distribute the Covered Software under the terms of the version
336 | of the License under which You originally received the Covered Software,
337 | or under the terms of any subsequent version published by the license
338 | steward.
339 |
340 | 10.3. Modified Versions
341 |
342 | If you create software not governed by this License, and you want to
343 | create a new license for such software, you may create and use a
344 | modified version of this License if you rename the license and remove
345 | any references to the name of the license steward (except to note that
346 | such modified license differs from this License).
347 |
348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary
349 | Licenses
350 |
351 | If You choose to distribute Source Code Form that is Incompatible With
352 | Secondary Licenses under the terms of this version of the License, the
353 | notice described in Exhibit B of this License must be attached.
354 |
355 | Exhibit A - Source Code Form License Notice
356 | -------------------------------------------
357 |
358 | This Source Code Form is subject to the terms of the Mozilla Public
359 | License, v. 2.0. If a copy of the MPL was not distributed with this
360 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
361 |
362 | If it is not possible or desirable to put the notice in a particular
363 | file, then You may include the notice in a location (such as a LICENSE
364 | file in a relevant directory) where a recipient would be likely to look
365 | for such a notice.
366 |
367 | You may add additional accurate notices of copyright ownership.
368 |
369 | Exhibit B - "Incompatible With Secondary Licenses" Notice
370 | ---------------------------------------------------------
371 |
372 | This Source Code Form is "Incompatible With Secondary Licenses", as
373 | defined by the Mozilla Public License, v. 2.0.
374 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Running Changelog Generator allows you to
2 |
3 | - Create test runs
4 | - Generate release notes
5 | - Generate the exclusion list
6 |
7 |
8 | Before you begin
9 |
10 | Download and install Python3 : https://www.python.org/downloads/
11 | If you haven’t already set up a ‘Development’ directory for github so you can clone repositories,
12 |
13 | - Create a Development directory
14 | - Open terminal, type mkdir Development
15 | _**This document assumes this is where you create this directory. You will need to adjust accordingly if you create this directory elsewhere.**_
16 |
17 |
18 |
19 | First time stuff - getting set up
20 |
21 | Open Terminal and navigate to your Development
directory.
22 | Type: git clone git@github.com:brave/qa-resources.git
23 | Press Enter/Return. You have now cloned the qa-resources repo onto your machine.
24 | Next, you’ll need to install the pygithub
package. This gives you the shared code needed to use GitHub’s public api.
25 |
26 | - Open a Terminal and type: pip3 install PyGithub
Then select Enter/Return.
27 | - FYI - You can get information on this pygithub package here: http://pygithub.readthedocs.io/en/latest/introduction.html
and the main library of packages can be found here: https://pypi.python.org/pypi
28 | In the qa-resources folder, create a file called github.secret
. To do this in your Terminal session change directory to qa-resources if you are not already inside the directory. Then type touch github.secret
and select Enter/Return.
29 | Next, you have to create a github key.
30 |
31 | - Login to your github account and navigate to https://github.com/settings/token
32 | - Select **`Tokens (Classic)`**
33 | - Click on **`Generate new token`** button.
34 | - Give the token a meaningful name and select **`gist`**, **`repo`**, **`workflow`** checkboxes below for your token.
35 | - Select **`Generate token`** button. Your token is now generated, it looks similar to an SHA. Copy the token. Do not exit this page yet.
36 | Add this token to your github.secret file.
37 |
38 | - To do this, in your Terminal session change directory to qa-resources if you are not already inside the directory.
39 | - Then type vi github.secret
and select Enter/Return.
40 | - Since you’ve already copied your token, type i
and paste your token. Then hit the Esc key.
41 | - Now type :wq
to save and exit the file.
42 | - If you want to verify that the token was saved correctly, you can type cat github.secret
and your token will display.
43 |
44 |
45 | Running the Changelog Generator
46 |
47 | Open a Terminal session.
48 | Change directory to where you have qa-resources.
49 | Determine what product you want to run the changelog-generator for (browser-laptop, Android, iOS) and if you want to create issues in github or just see the output in the terminal.
50 |
51 | - For simulating creation of test runs
52 |
53 | - In the terminal type python3 brave_testrun_generator.py --test true
and select Enter/Return.
54 | - Follow options on screen to simulate generating test runs. It will just displays the output in the terminal and does NOT create GitHub issues.
55 |
56 | - For Tor/IPFS:
57 |
58 | - Ensure milestones are created before running the test run generator.
59 | - Selecting the number option won't generate test runs for Tor/IPFS, need to type in `Tor/IPFS` respectively.
60 |
61 |
62 |
63 |
64 | Format of terminal output
65 | General format of the output in the terminal is as follows. Enter the number for which you want to generate test runs
66 |
67 | ```
68 |
69 | Rate Limit: 5000
70 | Rate Remaining: some number
71 |
72 | ##########################################################################################################################
73 |
74 | For Desktop or Android minor CR bump only use the basic checks selection to generate testruns
75 |
76 | Current open milestones for Desktop/Android
77 | 1. X.XX.x - Release
78 | 2. X.XX.x - Beta
79 | 3. X.XX.x - Nightly
80 |
81 | Current open milestones for iOS
82 | 1. X.XX
83 | 2. X.XX
84 | 3. X.XX
85 | 4. icebox
86 |
87 | NOTE:
88 |
89 | For Tor Release make sure you type "Tor" or "tor" instead of the number
90 |
91 | For IPFS Release make sure you type "IPFS/KUBO " or "ipfs/kubo" instead of the number
92 | ##########################################################################################################################
93 |
94 | Create test runs for:
95 |
96 | 1. Desktop Release (Full manual pass)
97 | 2. Desktop Release (Basic checks for hotfix/minor Chromium bump)
98 | 3. Android Release (Full manual pass)
99 | 4. Android Release (Basic checks for hotfix/minor Chromium bump)
100 | 5. iOS Release
101 | 6. Crypto Wallet - Desktop
102 | 7. Crypto Wallet - Android
103 | 8. Crypto Wallet - iOS
104 | 9. Tor Release
105 | 10. IPFS Release
106 |
107 | Choose the platform for which you want to generate the test run:
108 | ```
109 |
110 | Misc Notes
111 |
112 | - To get updates to the changelog-generator you can open a terminal and navigate to the /Development/qa-resources
folder and type: git pull
113 | - Be sure you never add your github.secret
file to any git commits you do.
114 | - If you uninstall Python3 for any reason, any packages you install (like PyGithub) will also be uninstalled, so you will need to install them again.
115 |
116 |
--------------------------------------------------------------------------------
/WikiTemplate/Android/wikitemplate-android.md:
--------------------------------------------------------------------------------
1 |
2 | ## Installer
3 |
4 | - [ ] Verify that the installer is close to the size of the last release
5 | - [ ] Verify that the Brave version is in About and make sure it is EXACTLY as expected
6 |
7 | ## Startup
8 |
9 | - [ ] Verify that Brave is only contacting `*.brave.com` endpoints on first launch using either `Charles Proxy`, `Fiddler` or `Wireshark` (or a similar application)
10 | - [ ] Verify that opening a NTP doesn't trigger any outbound connections related to widgets without user interaction
11 |
12 | ## Visual look
13 |
14 | - [ ] Verify that thereafter every merge:
15 | - [ ] No Chrome/Chromium words appear on `brave://version`
16 | - [ ] No Chrome/Chromium words appear on normal or private tabs
17 | - [ ] No Chrome/Chromium words appear in site settings for `Location` / `Camera` / `Microphone` / `Augmented Reality`
18 | - [ ] No Chrome/Chromium icons are shown in normal or private tabs
19 |
20 | ## Custom tabs
21 |
22 | - [ ] Verify that Brave handles links from Gmail, Slack
23 | - [ ] Verify that custom tabs work even with sync enabled/disabled
24 |
25 | ## Tab Groups
26 |
27 | - [ ] Verify that tab-group is disabled by default
28 | - [ ] Verify that tab-group is not reverted back to the default setting when changing it and then restarting the browser
29 |
30 | ## Developer Tools
31 |
32 | - [ ] Verify that you can inspect sub-links via dev tools
33 |
34 | ## Clear Data
35 |
36 | - [ ] Verify that Clear Data on exit works as intended
37 |
38 | ## Settings and Bottom bar
39 |
40 | - [ ] Verify that changing default settings are retained and don't cause the browser to crash
41 | - [ ] Verify that bottom bar buttons (Home/Bookmark/Search/Tabs) work as expected
42 | - [ ] Verify that items in the hamburger menu/share menu to ensure nothing unexpected has been added
43 |
44 | ## Unstoppable Domains, ENS and SNS
45 |
46 | - [ ] Verify that settings for Unstoppable Domains, ENS and SNS show up under Brave Shields & Privacy settings
47 |
48 | ## Downloads
49 |
50 | - [ ] Verify that downloading a file works and that all actions on the download item work.
51 | - [ ] Verify that PDF is downloaded over HTTPS at `https://basicattentiontoken.org/BasicAttentionTokenWhitePaper-4.pdf`
52 | - [ ] Verify that PDF is downloaded over HTTP at `http://www.pdf995.com/samples/pdf.pdf`
53 |
54 | ## Bravery settings
55 |
56 | - [ ] Verify that HTTPS Everywhere works by loading `http://https-everywhere.badssl.com/`
57 | - [ ] Verify that turning HTTPS Everywhere off and shields off both disable the redirect to `https://https-everywhere.badssl.com/`
58 | - [ ] Verify that toggling to blocking and allow ads works as expected
59 | - [ ] Verify that clicking through a cert error in `https://badssl.com/` works
60 | - [ ] Verify that Safe Browsing protection is enabled in `https://testsafebrowsing.appspot.com`
61 | - [ ] Verify that nothing should load by visiting `https://twitter.com/` and then turning on script blocking. Allow it from the script blocking UI in the URL bar and it should work.
62 | - [ ] Verify that default Bravery settings take effect on pages with no site settings
63 | - [ ] Verify that 3rd party storage results are blank at `https://jsfiddle.net/7ke9r14a/7/` when 3rd party cookies are blocked
64 | - [ ] Verify that your ISP's DNS resolvers aren't detected and not shown, but only your chosen DoH provider should appear by choosing a DNS provider from the list in Settings | Privacy | Use Secure DNS and loading `https://browserleaks.com/dns`.
65 | - [ ] Verify that results are as expected per each test listed by running all six test configurations on `https://dev-pages.brave.software/storage/ephemeral-storage.html`
66 | ### Fingerprint Tests
67 | - [ ] Verify that 2 blocked items are listed in shields by visiting `https://browserleaks.com/webrtc`
68 | - [ ] Verify that `https://diafygi.github.io/webrtc-ips/` doesn't leak the IP address for each option under `Settings -> Privacy and Security -> WebRTC IP handling policy`
69 |
70 | ### Query Filter
71 |
72 | - [ ] Verify that results are as expected per each test listed by visiting `https://fmarier.github.io/brave-testing/query-filter.html` in a Private window and running the tests as directed
73 |
74 | ## Content Tests
75 |
76 | - [ ] Verify that context menus work in the new X (Twitter) tab by going to `https://brianbondy.com/` and tapping on the Twitter icon on the top right
77 | - [ ] Verify that the password can be saved by going to `https://feedly.com` and signing in to the account. Verify that the saved password is auto-populated when you visit the site again
78 | - [ ] Verify that `https://mixed-script.badssl.com/` shows up as grey not red (no mixed content scripts are run)
79 |
80 | ## Brave Rewards
81 |
82 | - [ ] Verify that none of the reward endpoints are being contacted when a user visits a media creator (`youtube.com`, `reddit.com`, `twitter.com`, `github.com`) and hasn't joined rewards
83 | - [ ] Verify that `rewards.brave.com`, `pcdn.brave.com`, `grant.rewards.brave.com` or `api.rewards.brave.com` are not being contacted
84 | - [ ] Verify that you are able to create a new Rewards profile and you are in the unverified state by default
85 | - [ ] Verify that when you visit a creator in this state the panel shows a prompt to connect a custodian and no BAT information (earnings, balance, etc) is displayed
86 | - [ ] Verify that when you visit `brave://rewards` in this state there are no Auto Contribution, Tipping, or summary panels on this page
87 | - [ ] Verify that you can toggle notification ads off/on from the "Manage Brave Ads" panel on `brave://rewards`
88 | - [ ] Verify that you are able to connect a custodian
89 | - [ ] Verify that the Rewards balance shows the correct BAT and USD value on brave://rewards and panel after you connect
90 | - [ ] Verify that when you tap on the BR panel while on a site, the panel displays site-specific information (site favicon, domain, attention %)
91 | - [ ] Verify that the BR panel shows a message about an unverified creator
92 | - [ ] Verify that the "Send Contribution" button is grayed out on the panel for an unverified creator and the tip banner cannot be accessed
93 | - [ ] Verify that the tip banner shows a message about a creator with a different custodian
94 | - [ ] Verify that you are able to tip a creator who has the same custodian as you
95 | - [ ] Verify that there is no "Disconnect" option once connected to a custodian
96 | - [ ] Verify that you are able to reset rewards
97 | - [ ] Verify that after rewards are reset, you are now in the non-opted in state
98 | - [ ] Verify that you can re-join rewards, the panel and brave://rewards page are now in the unverified state
99 |
100 | ## Brave Ads
101 |
102 | - [ ] Verify that ads are auto-enabled when rewards are enabled for the supported region
103 | - [ ] Verify that ads are only shown when the app is being used
104 | - [ ] Verify that ad notifications are shown based on ads per hour setting
105 | - [ ] Verify that ad notifications stack up in the notification tray
106 | - [ ] Verify that swiping left/right dismisses the ad notification when shown and is not stored in the notification tray
107 | - [ ] Verify that tapping on an ad notification shows the landing page
108 | - [ ] Verify that `view`,`clicked`, `landed` and `dismiss` states are logged based on the action
109 |
110 | ## Sync
111 |
112 | - [ ] Verify that you are able to join the Sync chain by scanning the QR code
113 | - [ ] Verify that you are able to join the Sync chain using code words
114 | - [ ] Verify that you are able to create a Sync chain on the device and add other devices to the chain via QR code/Code words
115 | - [ ] Verify that once the Sync chain is created, `Categories` option is shown in the devices list
116 | - [ ] Verify that only `Bookmarks` is enabled in `Categories` by default
117 | - [ ] Verify that enabling `Sync everything` enables all other switches
118 | - [ ] Verify that existing bookmarks before joining the Sync chain also get synced to all devices on the Sync chain
119 | - [ ] Verify that `Autofill` data is synced to all devices when enabled
120 | - [ ] Verify that `History` is synced to all devices
121 | - [ ] Verify that `Open tab` from other devices shows up under history below the device name
122 | - [ ] Verify that `Password` is synced to all devices
123 | - [ ] Verify that `Settings` syncs site settings on all devices
124 | - [ ] Verify that sync works on an upgrade profile and new bookmarks added post-upgrade syncs across devices on the chain
125 | - [ ] Verify that adding a bookmark on a custom tab gets synced across all devices in the chain
126 | - [ ] Verify that you are able to create a standalone Sync chain with one device
127 | - [ ] Verify that `Remove this device` shows a confirmation alert before removing the sync chain on the device
128 |
129 | ## Top sites view
130 |
131 | - [ ] Verify that you are able to Long-press on Top sites to get to deletion mode, and delete a Top site (note this will stop that site from showing up again on Top sites, so you may not want to do this a site you want to keep there)
132 |
133 | ## Session storage
134 |
135 | - [ ] Verify that tabs restore when closed, including active tab
136 |
137 | ## Upgrade from previous version
138 |
139 | Examples of pre-requisites before upgrading from the previous version to the build being tested:
140 |
141 | * visit several websites so `Top Tiles` under New Tab Page gets updated/populated
142 | * add several websites to the Android home screen via `Add to Home screen` (from the hamburger/setting menu)
143 | * add several bookmarks including folders
144 | * change/update several settings (Example: default search engine, adding a custom home page, changing site settings, changing several privacy settings, etc..)
145 | * create/enable a Brave Wallet (or restore if an individual who's going through the upgrade has one available)
146 | * enable Brave News and add/remove several sources
147 | * change the default shield settings on various websites (Example: enable script blocking/change FP/Ad blocking to strict, disable shields)
148 | * Login into several websites and leave them opened
149 | * Login into several websites and close the tabs so they're not opened when upgrading
150 | * Login into a website and leave it as the active tab while upgrading
151 | * enable/create a sync chain with several devices
152 |
153 | **`Upgrade Cases`**
154 |
155 | - [ ] Verify that `brave://version` displays both the correct Brave version and the expected Chromium version
156 | - [ ] Verify that bookmarks and folders from the previous release have been retained/can be loaded without issues
157 | - [ ] Verify that previously opened tabs are retained and can be lazy loaded without issues
158 | - [ ] Verify that websites that have been logged into and were opened while upgrading are still logged in (ensure cookies are not cleared/lost)
159 | - [ ] Verify that websites that have been logged into but weren't open when upgrading are still logged in when loading in a new tab (ensure cookies are not cleared/lost)
160 | - [ ] Verify that the correct website loads as the active tab (as per the pre-requisites, this tab should be logged into a website)
161 | - [ ] Verify that the Shields settings from the previous versions are retained on each website
162 | - [ ] Verify that saved passwords are being displayed under `Settings` -> `Passwords` and can be auto-filled without issues
163 | - [ ] Verify that the Sync chain is preserved and that syncing still works across the devices that have been added
164 | - [ ] Verify that sharing links/tabs using `Send to your device` works as expected
165 | - [ ] Verify that Brave News is still enabled and source changes from the previous release are retained
166 | - [ ] Verify that the various setting changes via `Settings` are retained (Example: enable script blocking/change FP/Ad blocking to strict, disable shields)
167 | - [ ] Verify that Unstoppable Domains, ENS and SNS settings are retained from the previous version
168 | - [ ] Verify that `History` is retained from the previous version
169 | - [ ] Verify that the website shortcuts added via `Add to Home screen` are still visible on the Android home screen and tapping on icons loads the appropriate webpage
170 | - [ ] Verify that the `Tab Group` setting doesn't reset/change after upgrading
171 | - [ ] Verify that `Clear data on exit` is retained from the previous version
172 | - [ ] Rewards
173 | - [ ] Verify that BAT balance is retained
174 | - [ ] Verify that both Tips and Monthly Contributions are retained
175 | - [ ] Verify that the Summary panel transactions list is retained
176 | - [ ] Ads
177 | - [ ] Verify that both `Estimated pending rewards` & `Ad notifications received this month` are retained
178 | - [ ] Verify that changes to Ads settings are retained
179 | - [ ] Verify that Ads are not being enabled when upgrading to a new version if they were disabled
180 | - [ ] Verify that Ads are not being disabled when upgrading to a new version if they were enabled
181 |
--------------------------------------------------------------------------------
/WikiTemplate/Android/wikitemplate-minorCRbumpAndroid.md:
--------------------------------------------------------------------------------
1 | ## Installer
2 |
3 | - [ ] Check that installer is close to the size of the last release
4 | - [ ] Check the Brave version in About and make sure it is EXACTLY as expected
5 |
6 | ## Custom tabs
7 |
8 | - [ ] Make sure Brave handles links from Gmail, Slack
9 | - [ ] Make sure Brave works as custom tabs provide with Chrome browser
10 | - [ ] Ensure custom tabs work even with sync enabled/disabled
11 |
12 | ## Settings and Bottom bar
13 |
14 | - [ ] Verify changing default settings are retained and don't cause the browser to crash
15 | - [ ] Verify bottom bar buttons (Home/Bookmark/Search/Tabs) work as expected
16 |
17 | ### Rewards
18 |
19 | - [ ] Verify that you are able to successfully join Rewards on a fresh profile
20 |
21 | ## Upgrade
22 |
23 | Pre-Requisite: Visit several websites so Top Tiles under New Tab Page get updated and add several sites via `Add to Home screen` (from 3 dots menu) using a previous build/installation before upgrading.
24 |
25 | - [ ] Make sure that data from the last version appears in the new version OK
26 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
27 | - [ ] With data from the last version, verify that
28 | - [ ] Bookmarks are preserved (Folders/Sites)
29 | - [ ] Cookies are preserved
30 | - [ ] Per site shield settings are preserved
31 | - [ ] Opened tabs can be reloaded
32 | - [ ] Stored passwords are preserved
33 | - [ ] Sync chain created in previous version is retained
34 | - [ ] Setting changes are preserved (Default SE, Shield settings, Homepage etc..)
35 | - [ ] Top Tiles under New Tab Page are preserved
36 | - [ ] Home screen shortcuts are preserved
37 | - [ ] Rewards
38 | - [ ] BAT balance is retained
39 | - [ ] Auto-contribute list is retained
40 | - [ ] Both Tips and Monthly Contributions are retained
41 | - [ ] Summary panel transactions list is retained
42 | - [ ] Changes to rewards settings are retained
43 | - [ ] Ads
44 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
45 | - [ ] Changes to ads settings are retained
46 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
47 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
48 |
--------------------------------------------------------------------------------
/WikiTemplate/Crypto/wikitemplate-cryptoAndroid.md:
--------------------------------------------------------------------------------
1 |
2 | ## Onboarding
3 |
4 | - [ ] Verify able to create a wallet by following onboarding
5 | - [ ] Verify not able to take screenshots during onboarding screens
6 | - [ ] Verify able to back up wallet seed phrase during onboarding
7 | - [ ] Verify able to skip back up wallet seed screen to complete onboarding
8 | - [ ] Verify onboarding is shown when trying to interact with Dapp without creating wallet
9 |
10 | ## Panel
11 |
12 | - [ ] Verify panel is only shown in URL when a Dapp is trying to interact
13 | - [ ] Verify able to change default network from panel
14 | - [ ] Verify able to change accounts from panel
15 | - [ ] Verify notification dot is shown on wallet icon when an action is pending for Wallet
16 |
17 | ## Ethereum
18 |
19 | - [ ] Verify Ethereum account is created as soon as onboarding is completed
20 | - [ ] Verify able to create an Ethereum account can be created from accounts tab
21 | - [ ] Verify able to create an Ethereum account can be created from accounts list screen
22 | - [ ] Verify able to import an Ethereum account via Private Key/JSON file
23 | - [ ] Verify able to submit a Buy ETH transaction
24 | - [ ] Verify able to submit a Send ETH transaction
25 | - [ ] Verify able to perform Swap ETH transaction
26 | - [ ] Verify send transactions using different OS locale. (Refer [brave/brave-browser#24909](https://github.com/brave/brave-browser/issues/24909) for more info)
27 |
28 | ## Solana
29 |
30 | - [ ] Verify able to create a Solana account when Solana Mainnet Beta is selected from network picker
31 | - [ ] Verify able to create a Solana account from accounts tab
32 | - [ ] Verify able to create a Solana account can be created from accounts list screen
33 | - [ ] Verify able to send tokens from one Solana account to another
34 | - [ ] Verify able to submit a SOL transaction
35 |
36 | ## Network Settings
37 |
38 | - [ ] Verify able to add a custom network via Settings
39 | - [ ] Verify able to change active network to a custom network via portfolio
40 |
41 | ## Custom Tokens
42 |
43 | - [ ] Verify able to manually add a custom token
44 | - [ ] Verify able to manually add ERC721 tokens
45 | - [ ] Verify able to add custom tokens via webpage (Coingecko/CoinMarketCap)
46 |
47 | ## Dapp Support (Ethereum)
48 |
49 | - [ ] Verify able to connect to a Dapp
50 | - [ ] Verify when a Dapp is trying to interact a toast notification is shown when wallet is locked/wallet icon is not yet shown in URL
51 | - [ ] Verify clicking on the Dapp interaction notification, opens the Panel for Dapp interaction
52 | - [ ] Verify able to connect multiple accounts to a Dapp
53 | - [ ] Verify able to connect/disconnect to Dapp from Panel
54 | - [ ] Verify able to approve/reject Dapp request to change network via panel
55 | - [ ] Verify able to approve/cancel transaction request via panel when interacting with a Dapp
56 | - [ ] Verify able to add a custom network via panel when connected to a Dapp
57 | - [ ] Verify able to switch networks via panel when a Dapp requests network change
58 | - [ ] Verify able to sign messages from Dapp via Wallet panel
59 | - [ ] Verify able to get public encryption key from Dapp via panel
60 | - [ ] Verify able to view decrypt message form Dapp on panel
61 |
62 | ## Settings
63 |
64 | - [ ] Verify able to set custom timer on auto-lock
65 | - [ ] Verify able to add/remove a custom network
66 | - [ ] Verify able to set added custom network as default via settings
67 | - [ ] Verfiy able to set/disable Web3 Notification
68 | - [ ] Verify when Web3 Notification settings is disabled, there is no notification dot shown on wallet during Dapp interaction
69 | - [ ] Verify able to clear transactions and nonce information
70 | - [ ] Verify able to reset wallet
71 | - [ ] Verify recreating wallet after reset creates a new account
--------------------------------------------------------------------------------
/WikiTemplate/Crypto/wikitemplate-cryptoDesktop.md:
--------------------------------------------------------------------------------
1 |
2 | ## Onboarding
3 |
4 | - [ ] Verify loading `brave://wallet` on a clean profile shows onboarding flow
5 | - [ ] Verify you are able to complete the onboarding flow to Ethereum create wallet by default
6 | - [ ] Verify you are able to complete the backup seed phrase during onboarding itself
7 | - [ ] Verify you can skip the onboarding from backup wallet screen and still create a wallet
8 | - [ ] Verify when a Dapp interacts without creating wallet opens a new tab and shows onboarding
9 |
10 | ## Importing Wallet
11 |
12 | - [ ] Verify with MetaMask extension installed and wallet created, visiting `brave://wallet/crypto/onboarding/import-or-restore` shows option to import account from MetaMask during onboarding
13 | - [ ] Verify error message is shown when trying to use same password as MetaMask and it doesn't meet Brave Wallet's password criteria
14 | - [ ] Verify able to successfully import MetaMask wallet into Brave Wallet
15 | - [ ] Verify with Crypto Wallet Extension installed and wallet created, visiting `brave://wallet/crypto/onboarding/import-or-restore` shows option to import account from old Crypto Wallet Extension
16 | - [ ] Verify error message is shown when trying to use same password as Crypto Wallet Extension and it doesn't meet Brave Wallet's password criteria
17 | - [ ] Verify able to successfully import Crypto Wallet Extension with 12-seed into Brave Wallet
18 | - [ ] Verify able to successfully import Crypto Wallet Extension with 24-seed word into Brave Wallet
19 |
20 | ## Panel
21 |
22 | - [ ] Verify when wallet is not created opening the wallet panel shows `Learn More` message. Clicking on it opens `brave://wallet` in a new tab
23 | - [ ] Verify when wallet is created, opening the panel shows default account and selected network and account balance
24 | - [ ] Verify Buy/Send/Swap buttons are available and loads corresponding screens to perform action
25 | - [ ] Verify transaction history button is shown and lists recent transactions for selected network when clicked
26 | - [ ] Verify changing network in panel updates the corresponding account in panel and in portfolio page
27 | - [ ] Verify changing account in panel updates the corresponding network in panel and in portfolio page
28 | - [ ] Verify when a Dapp is connected to wallet account, panel shows a `Connected` state notification
29 | - [ ] Verify when a Dapp connection is revoked, panel shows a `Disconnected` state notification
30 | - [ ] Verify selecting `Connected Sites` from panel menu loads `brave://settings/content/` for Ethereum/Solana based on selected account
31 | - [ ] Verify selecting `View on Block explorer` from panel loads the corresponding account's details on the network block explorer
32 | - [ ] Verify selecting `Help Center` opens a new tab and loads `https://support.brave.com/hc/en-us/articles/4415497656461-Brave-Walllet-FAQ`
33 | - [ ] Verify you are able to lock the wallet from panel menu
34 | - [ ] Verify clicking on the expand button on the top-left of panel loads the wallet page in a new tab
35 |
36 | ## Portfolio & Accounts
37 |
38 | - [ ] Verify after creating a wallet it loads portfolio screen by default
39 | - [ ] Verify portfolio page shows balance of all accounts
40 | - [ ] Verify able to show/hide balance on portfolio screen
41 | - [ ] Verify able to search for token in portfolio screen
42 | - [ ] Verify able to filter assets list by specific network via the network dropdown
43 | - [ ] Verify able to sort NFT's and Assets list by balance amount
44 | - [ ] Verify able to add or remove assets from view via `Visible assets` button
45 | - [ ] Verify able to add a new custom asset for specific network
46 | - [ ] Verify able to add hide/remove custom asset via `Visible assets` list
47 | - [ ] Verify able to create a new primary account for Ethereum/Solana/Filecoin via `Create Account` in accounts tab
48 | - [ ] Verify able to import Ethereum/Solana/Filecoin accounts via `Import` option
49 | - [ ] Verify imported accounts are listed under `Secondary Accounts`
50 | - [ ] Verify able to import Ethereum/Solana/Filecoin accounts via `Import from hardware wallet`
51 | - [ ] Verify imported hardware wallet accounts are listed under `Secondary Accounts`
52 | - [ ] Verify Wallet backup message is shown on both portfolio and accounts tab if skipped during onboarding
53 | - [ ] Verify Brave Wallet is not default message is shown when MetaMask is installed and `Brave Wallet (Prefer extensions)` is set as default wallet provider
54 |
55 | ## Ethereum
56 |
57 | - [ ] Verify when a new wallet is created Ethereum Account is created but not set as default
58 | - [ ] Verify for a newly created Ethereum wallet, `ETH` and `BAT` tokens are added by default on portfolio screen
59 | - [ ] Verify the account address is same for Ethereum Mainnet and other EVM's
60 | - [ ] Verify able to add a new Ethereum account via the Accounts tab
61 | - [ ] Verify able to import an Ethereum account via `Private Key` or `JSON file` under the import section
62 | - [ ] Verify able to import Ethereum account via hardware keys
63 | - [ ] Verify able to resolve UD/ENS Domains on `Send To` tab
64 |
65 | ## Solana
66 |
67 | - [ ] Verify when a new wallet is created Solana Account is created and set as default
68 | - [ ] Verify when `Solana Mainnet Beta` is selected in network dropdown in panel or in widget, it prompts to create a new Solana account
69 | - [ ] Verify selecting `Yes` in the create Solana account modal creates a new Solana account
70 | - [ ] Verify selecting `No` in the create Solana account doesn't create a new Solana account
71 | - [ ] Verify able to add a new Solana account via the Accounts tab
72 | - [ ] Verify able to import an Solana account via `Private Key` under the import section
73 | - [ ] Verify able to import Solana account via hardware keys
74 |
75 | ## Filecoin
76 |
77 | - [ ] Verify when a new wallet is created there is no Filecoin account created by default
78 | - [ ] Verify when `Filecoin` is selected in network dropdown in panel or in widget, it prompts to create a new Filecoin account
79 | - [ ] Verify selecting `Yes` in the create Filecoin account modal creates a new Filecoin account
80 | - [ ] Verify selecting `No` in the create Filecoin account modal doesn't create a new Filecoin account
81 | - [ ] Verify able to add a new Filecoin account via the Accounts tab
82 | - [ ] Verify able to import an Filecoin account via `Private Key` under the import section
83 | - [ ] Verify able to import Filecoin account via hardware keys
84 |
85 | ## Hardware
86 |
87 | - [ ] Verify able to connect Ledger and import Ethereum accounts
88 | - [ ] Verify able to connect Ledger and import Solana accounts
89 | - [ ] Verify able to connect Ledger and import Filecoin accounts
90 | - [ ] Verify able to connect Trezor and import Ethereum accounts
91 |
92 | ## Custom Tokens
93 |
94 | - [ ] Verify able to manually add a ERC721 token
95 | - [ ] Verify able to manually add a custom token for Ethereum/EVM network
96 | - [ ] Verify able to manually add a custom token for Solana network
97 | - [ ] Verify able to add a custom token via webpage (Coingecko/Coinmarketcap)
98 |
99 | ## Wallet Settings
100 |
101 | - [ ] Verify Default Ethereum Wallet dropdown is set to `Brave Wallet` as default
102 | - [ ] Verify Default Solana Wallet dropdown is set to `Brave Wallet (prefer extensions)` as default
103 | - [ ] Verify Default Ethereum/Solana Wallet allows to set Brave Wallet as default
104 | - [ ] Verify Default Ethereum/Solana Wallet allows to set it to None
105 | - [ ] Verify with Crypto Wallets Extension flag enabled `Crypto Wallet (deprecated)` is only shown for Default Ethereum Wallet
106 | - [ ] Verify able to change default base currency (USD -> Other)
107 | - [ ] Verify able to change default base cryptocurrency from BTC to other (ETH/LTC/BCH etc)
108 | - [ ] Verify able to update default wallet lock time and works as expected
109 | - [ ] Verify able to clear wallet transaction & nonce information
110 | - [ ] Verify able to add custom network
111 | - [ ] Verify able to set a network as active network from settings
112 | - [ ] Verify able to delete added custom network
113 | - [ ] Verify able to edit pre-loaded default networks
114 | - [ ] Verify able to enable/disable test networks
115 | - [ ] Verify able to reset default networks when edited
116 |
117 | ## Dapp Support (Ethereum & Solana)
118 |
119 | - [ ] Verify able to connect to an Ethereum Dapp
120 | - [ ] Verify after connecting to an Ethereum Dapp the connected state is saved in `brave://settings/content/ethereum`
121 | - [ ] Verify able to connect to an Solana Dapp
122 | - [ ] Verify after connecting to an Solana Dapp the connected state is saved in `brave://settings/content/ethereum`
123 | - [ ] Verify able to connect multiple accounts to Dapp (Both Ethereum & Solana)
124 | - [ ] Verify able to submit transactions when wallet is connected to Dapp (Both Ethereum & Solana)
125 | - [ ] Verify able to add a custom token from Dapp
126 | - [ ] Verify able to Sign Transactions for both Ethereum & Solana accounts
127 | - [ ] Verify able to add a custom network via Dapp
128 | - [ ] Verify network switch prompt is shown when adding a new network or changing network in Dapp
129 |
130 | ## Restore & Reset
131 |
132 | - [ ] Verify able to restore a wallet using seed words from the onboarding screen (No wallet created)
133 | - [ ] Verify able to restore a wallet using seed words from wallet lock screen (Wallet created & Locked)
134 | - [ ] Verify when a wallet is restored, there is no "Backup wallet" message is shown
135 | - [ ] Verify when a wallet is restored, all the accounts that have a transaction are restored
136 | - [ ] Verify when a wallet is restored it restores all Ethereum & Solana accounts that have a send transaction
137 | - [ ] Verify able to reset wallet from `brave://settings/wallet`
138 | - [ ] Verify wallet tab is reloaded when wallet is reset from settings
139 |
140 | ## Transactions
141 |
142 | - [ ] Verify Buy ETH works with different on-ramp providers
143 | - [ ] Verify Buy Solana works with different on-ramp providers
144 | - [ ] Verify Buy Filecoin works
145 | - [ ] Verify able to submit Send ETH transaction
146 | - [ ] Verify able to submit Send SOL transaction
147 | - [ ] Verify able to submit Send FIL transaction
148 | - [ ] Verify able to perform Swap ETH transaction
149 | - [ ] Verify able to perform Swap SOL transaction
150 | - [ ] Verify able to perform Swap on different pre-loaded EVM chains
151 | - [ ] Verify transaction notification is shown for confirmed/error/rejected transactions
152 | - [ ] Verify clicking on the transaction notification opens a new tab and loads the token details to view the current transaction
153 | - [ ] Verify able to submit and approve Ethereum transactions via imported Ethereum account on Ledger
154 | - [ ] Verify able to submit and approve Solana transactions via imported Solana account on Ledger
155 | - [ ] Verify able to submit and approve Filecoin transactions via imported Filecoin account on Ledger
156 | - [ ] Verify able to submit and approve transactions via imported Ethereum account on Trezor
157 |
--------------------------------------------------------------------------------
/WikiTemplate/Crypto/wikitemplate-cryptoiOS.md:
--------------------------------------------------------------------------------
1 |
2 | ## Onboarding
3 |
4 | - [ ] Verify able to create a wallet by following onboarding
5 | - [ ] Verify not able to take screenshots during onboarding screens
6 | - [ ] Verify able to back up wallet seed phrase during onboarding
7 | - [ ] Verify able to skip back up wallet seed screen to complete onboarding
8 | - [ ] Verify onboarding is shown when trying to interact with Dapp without creating wallet
9 |
10 | ## Panel
11 |
12 | - [ ] Verify panel is only shown in URL bar when a Dapp is trying to interact
13 | - [ ] Verify able to change default network from panel
14 | - [ ] Verify able to change accounts from panel
15 | - [ ] Verify notification dot is shown on wallet icon when an action is pending for Wallet
16 |
17 | ## Ethereum
18 |
19 | - [ ] Verify Ethereum account is created as soon as onboarding is completed
20 | - [ ] Verify able to create an Ethereum account from accounts tab
21 | - [ ] Verify able to create an Ethereum account from accounts list screen
22 | - [ ] Verify able to import an Ethereum account via Private Key/JSON file
23 | - [ ] Verify able to submit a Buy ETH transaction
24 | - [ ] Verify able to submit a Send ETH transaction
25 | - [ ] Verify able to perform a Swap ETH transaction
26 |
27 | ## Solana
28 |
29 | - [ ] Verify able to create a Solana account when Solana Mainnet Beta is selected from network picker
30 | - [ ] Verify able to create a Solana account from accounts tab
31 | - [ ] Verify able to create a Solana account can be created from accounts list screen
32 | - [ ] Verify able to send tokens from one Solana account to another
33 | - [ ] Verify able to submit a SOL transaction
34 |
35 | ## Network Settings
36 |
37 | - [ ] Verify able to add a custom network via Settings
38 | - [ ] Verify able to change active network to a custom network via portfolio
39 |
40 | ## Custom Tokens
41 |
42 | - [ ] Verify able to manually add a custom token
43 | - [ ] Verify able to manually add ERC721 tokens (Yet to be implmented)
44 | - [ ] Verify able to add custom tokens via webpage (Coingecko/CoinMarketCap)
45 |
46 | ## Dapp Support (Ethereum)
47 |
48 | - [ ] Verify able to connect to a Dapp
49 | - [ ] Verify when a Dapp is trying to interact a toast notification is shown when wallet is locked/wallet icon is not yet shown in URL bar
50 | - [ ] Verify clicking on the Dapp interaction notification, opens the Panel for Dapp interaction
51 | - [ ] Verify able to connect multiple accounts to a Dapp
52 | - [ ] Verify able to connect/disconnect to Dapp from Panel
53 | - [ ] Verify able to approve/reject Dapp request to change network via panel
54 | - [ ] Verify able to approve/cancel transaction request via panel when interacting with a Dapp
55 | - [ ] Verify able to add a custom network via panel when connected to a Dapp
56 | - [ ] Verify able to switch networks via panel when a Dapp requests network change
57 | - [ ] Verify able to sign messages from Dapp via Wallet panel
58 | - [ ] Verify able to get public encryption key from Dapp via panel
59 | - [ ] Verify able to view decrypt message form Dapp on panel
60 |
61 | ## Settings
62 |
63 | - [ ] Verify able to set custom timer on auto-lock
64 | - [ ] Verify able to add/remove a custom network
65 | - [ ] Verify able to set added custom network as default via settings
66 | - [ ] Verfiy able to set/disable Web3 Notification
67 | - [ ] Verify when Web3 Notification settings is disabled, there is no notification dot shown on wallet during Dapp interaction
68 | - [ ] Verify able to clear transactions and nonce information
69 | - [ ] Verify able to reset wallet
70 | - [ ] Verify recreating wallet after reset creates a new account
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/Major_CR_Bump/wikitemplate-majorChromiumBumpUpgrades.md:
--------------------------------------------------------------------------------
1 | As per process, QA runs through the following cases to ensure that the major chromium bump that's about to get merged into `master` doesn't regress the `Nightly` channel. Once the major chromium bump is merged into `master`, QA will run through a full manual pass on `Windows` & `Android`.
2 |
3 | ### Startup & Components
4 |
5 | - [ ] Verify that Brave is only contacting `*.brave.com` endpoints on first launch using either `Charles Proxy`, `Fiddler`, `Wireshark` or `LittleSnitch` (or a similar application)
6 | - [ ] Verify that opening a NTP doesn't trigger any outbound connections related to widgets without user interaction
7 | - [ ] Remove the following component folders and ensure that they're being re-downloaded after restarting the browser:
8 | - [ ] `afalakplffnnnlkncjhbmahjfjhmlkal`: `AutoplayWhitelist.dat`, `ExtensionWhitelist.dat`, `ReferrerWhitelist.json` and `Greaselion.json`
9 | - [ ] `CertificateRevocation`
10 | - [ ] `gccbbckogglekeggclmmekihdgdpdgoe`: (Sponsored New Tab Images)
11 | - [ ] `gkboaolpopklhgplhaaiboijnklogmbc`: Brave Ad Block List Catalog
12 | - [ ] `iodkpdagapdfkphljnddpjlldadblomo`: Brave Ad Block Updater
13 | - [ ] `mfddibmblmbccpadfndgakiopmmhebop`: Brave Ad Block List Catalog
14 | - [ ] `Safe Browsing`
15 | - [ ] Restart the browser, load `brave://components`, wait for 8 mins and verify that no component shows any errors
16 |
17 | **Note:** Always double check `brave://components` to make sure there's no errors/missing version numbers
18 |
19 | ### Upgrade
20 |
21 | - [ ] Make sure that data from the last version appears in the new version OK
22 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
23 | - [ ] With data from the last version, verify that:
24 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
25 | - [ ] Cookies are preserved
26 | - [ ] Installed extensions are retained and work correctly
27 | - [ ] Opened tabs can be reloaded
28 | - [ ] Stored passwords are preserved
29 | - [ ] Sync chain created in previous version is retained
30 | - [ ] Social media-blocking buttons changes are retained
31 | - [ ] Custom filters under brave://settings/shields/filters are retained
32 | - [ ] Custom lists under brave://settings/shields/filters are retained
33 | - [ ] Rewards
34 | - [ ] BAT balance is retained
35 | - [ ] Auto-contribute list is retained
36 | - [ ] Both Tips and Monthly Contributions are retained
37 | - [ ] Panel transactions list is retained
38 | - [ ] Changes to rewards settings are retained
39 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
40 | - [ ] Ads
41 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
42 | - [ ] Changes to ads settings are retained
43 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
44 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
45 |
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/Minor_CR_Bump/wikitemplate-minorCRbump-macOS-arm64.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Ensured that the following executables work as expected
4 | - [ ] `Brave-Browser-arm64.dmg`
5 | - [ ] Check executable size, should be `~290mb`
6 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
7 | - [ ] `Brave-Browser-universal.dmg`
8 | - [ ] Check executable size, should be `~500mb`
9 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
10 | - [ ] Visited `brave://version` and ensure the following:
11 | - [ ] `arm64` is being displayed when installing via `arm64` and `universal` binaries on `M1` mac
12 |
13 | ### Widevine
14 |
15 | - [ ] Using `universal` build:
16 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
17 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
18 | - [ ] Using `arm64` build:
19 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
20 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
21 |
22 | #### Components
23 | - [ ] Delete Adblock folder from browser profile and restart browser. Visit `brave://components` and verify `Brave Ad Block Updater` downloads and update the component. Repeat for all Brave components
24 |
25 | #### Upgrade - `Brave-Browser-arm64.dmg`
26 |
27 | - [ ] Make sure that data from the last version appears in the new version OK
28 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
29 | - [ ] With data from the last version, verify that
30 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
31 | - [ ] Cookies are preserved
32 | - [ ] Installed extensions are retained and work correctly
33 | - [ ] Opened tabs can be reloaded
34 | - [ ] Stored passwords are preserved
35 | - [ ] Sync chain created in previous version is retained
36 | - [ ] Social media blocking buttons changes are retained
37 | - [ ] Custom filters under brave://settings/shields/filters are retained
38 | - [ ] Custom lists under brave://settings/shields/filters are retained
39 | - [ ] Rewards
40 | - [ ] BAT balance is retained
41 | - [ ] Auto-contribute list is retained
42 | - [ ] Both Tips and Monthly Contributions are retained
43 | - [ ] Panel transactions list is retained
44 | - [ ] Changes to rewards settings are retained
45 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
46 | - [ ] Ads
47 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
48 | - [ ] Changes to ads settings are retained
49 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
50 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
51 |
52 | #### Upgrade - `Brave-Browser-universal.dmg`
53 |
54 | Pre-requisite: Make sure that the previous version is installed using the universal build
55 | - [ ] Make sure that after upgrade, the universal build is upgraded to the appropriate architecture specific version
56 | - [ ] Confirm that the .app file size has decreased as a result of the upgrade
57 | - [ ] Make sure that data from the last version appears in the new version OK
58 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
59 | - [ ] With data from the last version, verify that
60 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
61 | - [ ] Cookies are preserved
62 | - [ ] Opened tabs can be reloaded
63 | - [ ] Stored passwords are preserved
64 | - [ ] Sync chain created in previous version is retained
65 | - [ ] Social media blocking buttons changes are retained
66 | - [ ] Custom filters under brave://settings/shields/filters are retained
67 | - [ ] Custom lists under brave://settings/shields/filters are retained
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/Minor_CR_Bump/wikitemplate-minorCRbump-macOS-x64.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Ensured that the following executables work as expected
4 | - [ ] `Brave-Browser-x64.dmg`
5 | - [ ] Check executable size, should be `~290mb`
6 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
7 | - [ ] `Brave-Browser-universal.dmg`
8 | - [ ] Check executable size, should be `~500mb`
9 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
10 |
11 | ### Widevine
12 |
13 | - [ ] Using `x64` build:
14 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
15 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
16 | - [ ] Using `universal` build:
17 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
18 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
19 |
20 | #### Upgrade - `Brave-Browser-x64.dmg`
21 |
22 | - [ ] Make sure that data from the last version appears in the new version OK
23 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
24 | - [ ] With data from the last version, verify that
25 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
26 | - [ ] Cookies are preserved
27 | - [ ] Installed extensions are retained and work correctly
28 | - [ ] Opened tabs can be reloaded
29 | - [ ] Stored passwords are preserved
30 | - [ ] Sync chain created in previous version is retained
31 | - [ ] Social media blocking buttons changes are retained
32 | - [ ] Custom filters under brave://settings/shields/filters are retained
33 | - [ ] Custom lists under brave://settings/shields/filters are retained
34 | - [ ] Rewards
35 | - [ ] BAT balance is retained
36 | - [ ] Auto-contribute list is retained
37 | - [ ] Both Tips and Monthly Contributions are retained
38 | - [ ] Panel transactions list is retained
39 | - [ ] Changes to rewards settings are retained
40 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
41 | - [ ] Ads
42 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
43 | - [ ] Changes to ads settings are retained
44 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
45 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
46 |
47 | #### Upgrade - `Brave-Browser-universal.dmg`
48 |
49 | Pre-requisite: Make sure that the previous version is installed using the universal build
50 | - [ ] Make sure that after upgrade, the universal build is upgraded to the appropriate architecture specific version
51 | - [ ] Confirm that the .app file size has decreased as a result of the upgrade
52 | - [ ] Make sure that data from the last version appears in the new version OK
53 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
54 | - [ ] With data from the last version, verify that
55 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
56 | - [ ] Cookies are preserved
57 | - [ ] Opened tabs can be reloaded
58 | - [ ] Stored passwords are preserved
59 | - [ ] Sync chain created in previous version is retained
60 | - [ ] Social media blocking buttons changes are retained
61 | - [ ] Custom filters under brave://settings/shields/filters are retained
62 | - [ ] Custom lists under brave://settings/shields/filters are retained
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/Minor_CR_Bump/wikitemplate-minorCRbumpDesktop.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Check signature:
4 | - [ ] If macOS, using `arm64` binary run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`
5 | - [ ] If macOS, using `universal` binary run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`
6 | - [ ] If Windows right click on the `brave_installer-x64.exe` and go to Properties, go to the Digital Signatures tab and double click on the signature. Make sure it says "The digital signature is OK" in the popup window
7 |
8 | ### Widevine
9 |
10 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
11 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
12 | - [ ] If macOS, run the above Widevine tests for both `arm64` and `universal` builds
13 |
14 | ### Rewards
15 |
16 | - [ ] Verify that you are able to successfully join Rewards on a fresh profile
17 |
18 | ### TLS Pinning
19 |
20 | - [ ] Visit https://ssl-pinning.someblog.org/ and verify a pinning error is displayed
21 | - [ ] Visit https://pinning-test.badssl.com/ and verify a pinning error is **not** displayed
22 |
23 | ## Update tests
24 |
25 | - [ ] Verify visiting `brave://settings/help` triggers update check
26 | - [ ] Verify once update is downloaded, prompts to `Relaunch` to install update
27 |
28 | ### Upgrade
29 |
30 | - [ ] Make sure that data from the last version appears in the new version OK
31 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
32 | - [ ] With data from the last version, verify that
33 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
34 | - [ ] Cookies are preserved
35 | - [ ] Installed extensions are retained and work correctly
36 | - [ ] Opened tabs can be reloaded
37 | - [ ] Stored passwords are preserved
38 | - [ ] Sync chain created in previous version is retained
39 | - [ ] Social media blocking buttons changes are retained
40 | - [ ] Custom filters under brave://settings/shields/filters are retained
41 | - [ ] Custom lists under brave://settings/shields/filters are retained
42 | - [ ] Rewards
43 | - [ ] BAT balance is retained
44 | - [ ] Auto-contribute list is retained
45 | - [ ] Both Tips and Monthly Contributions are retained
46 | - [ ] Panel transactions list is retained
47 | - [ ] Changes to rewards settings are retained
48 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
49 | - [ ] Ads
50 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
51 | - [ ] Changes to ads settings are retained
52 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
53 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
54 |
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/wikitemplate-macOS-arm64.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Ensured that the following executables work as expected
4 | - [ ] `Brave-Browser-arm64.dmg`
5 | - [ ] Check executable size, should be `~290mb`
6 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
7 | - [ ] `Brave-Browser-arm64.pkg`
8 | - [ ] Check executable size, should be `~290mb`
9 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
10 | - [ ] `Brave-Browser-universal.dmg`
11 | - [ ] Check executable size, should be `~500mb`
12 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
13 | - [ ] `Brave-Browser-universal.pkg`
14 | - [ ] Check executable size, should be `~500mb`
15 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
16 | - [ ] Visited `brave://version` and ensure the following:
17 | - [ ] `arm64` is being displayed when installing via `arm64` and `universal` binaries on `M1` mac
18 |
19 | ### Widevine
20 |
21 | - [ ] Using `universal` build:
22 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
23 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
24 | - [ ] Using `arm64` build:
25 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
26 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
27 |
28 | #### Components
29 | - [ ] Delete Adblock folder from browser profile and restart browser. Visit `brave://components` and verify `Brave Ad Block Updater` downloads and update the component. Repeat for all Brave components
30 |
31 | #### Upgrade - `Brave-Browser-arm64.dmg`
32 |
33 | - [ ] Make sure that data from the last version appears in the new version OK
34 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
35 | - [ ] With data from the last version, verify that
36 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
37 | - [ ] Cookies are preserved
38 | - [ ] Installed extensions are retained and work correctly
39 | - [ ] Opened tabs can be reloaded
40 | - [ ] Stored passwords are preserved
41 | - [ ] Sync chain created in previous version is retained
42 | - [ ] Social media blocking buttons changes are retained
43 | - [ ] Custom filters under brave://settings/shields/filters are retained
44 | - [ ] Custom lists under brave://settings/shields/filters are retained
45 | - [ ] Rewards
46 | - [ ] BAT balance is retained
47 | - [ ] Auto-contribute list is retained
48 | - [ ] Both Tips and Monthly Contributions are retained
49 | - [ ] Panel transactions list is retained
50 | - [ ] Changes to rewards settings are retained
51 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
52 | - [ ] Ads
53 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
54 | - [ ] Changes to ads settings are retained
55 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
56 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
57 |
58 | #### Upgrade - `Brave-Browser-universal.dmg`
59 |
60 | Pre-requisite: Make sure that the previous version is installed using the universal build
61 | - [ ] Make sure that after upgrade, the universal build is upgraded to the appropriate architecture specific version
62 | - [ ] Confirm that the .app file size has decreased as a result of the upgrade
63 | - [ ] Make sure that data from the last version appears in the new version OK
64 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
65 | - [ ] With data from the last version, verify that
66 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
67 | - [ ] Cookies are preserved
68 | - [ ] Opened tabs can be reloaded
69 | - [ ] Stored passwords are preserved
70 | - [ ] Sync chain created in previous version is retained
71 | - [ ] Social media blocking buttons changes are retained
72 | - [ ] Custom filters under brave://settings/shields/filters are retained
73 | - [ ] Custom lists under brave://settings/shields/filters are retained
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/wikitemplate-macOS-x64.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Ensured that the following executables work as expected
4 | - [ ] `Brave-Browser-x64.dmg`
5 | - [ ] Check executable size, should be `~290mb`
6 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
7 | - [ ] `Brave-Browser-universal.dmg`
8 | - [ ] Check executable size, should be `~500mb`
9 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
10 | - [ ] `Brave-Browser-universal.pkg`
11 | - [ ] Check executable size, should be `~500mb`
12 | - [ ] Check signature: If OS Run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`.
13 |
14 | ### Widevine
15 |
16 | - [ ] Using `x64` build:
17 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
18 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
19 | - [ ] Using `universal` build:
20 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
21 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
22 |
23 | #### Upgrade - `Brave-Browser-x64.dmg`
24 |
25 | - [ ] Make sure that data from the last version appears in the new version OK
26 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
27 | - [ ] With data from the last version, verify that
28 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
29 | - [ ] Cookies are preserved
30 | - [ ] Installed extensions are retained and work correctly
31 | - [ ] Opened tabs can be reloaded
32 | - [ ] Stored passwords are preserved
33 | - [ ] Sync chain created in previous version is retained
34 | - [ ] Social media blocking buttons changes are retained
35 | - [ ] Custom filters under brave://settings/shields/filters are retained
36 | - [ ] Custom lists under brave://settings/shields/filters are retained
37 | - [ ] Rewards
38 | - [ ] BAT balance is retained
39 | - [ ] Auto-contribute list is retained
40 | - [ ] Both Tips and Monthly Contributions are retained
41 | - [ ] Panel transactions list is retained
42 | - [ ] Changes to rewards settings are retained
43 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
44 | - [ ] Ads
45 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
46 | - [ ] Changes to ads settings are retained
47 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
48 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
49 |
50 | #### Upgrade - `Brave-Browser-universal.dmg`
51 |
52 | Pre-requisite: Make sure that the previous version is installed using the universal build
53 | - [ ] Make sure that after upgrade, the universal build is upgraded to the appropriate architecture specific version
54 | - [ ] Confirm that the .app file size has decreased as a result of the upgrade
55 | - [ ] Make sure that data from the last version appears in the new version OK
56 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
57 | - [ ] With data from the last version, verify that
58 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
59 | - [ ] Cookies are preserved
60 | - [ ] Opened tabs can be reloaded
61 | - [ ] Stored passwords are preserved
62 | - [ ] Sync chain created in previous version is retained
63 | - [ ] Social media blocking buttons changes are retained
64 | - [ ] Custom filters under brave://settings/shields/filters are retained
65 | - [ ] Custom lists under brave://settings/shields/filters are retained
--------------------------------------------------------------------------------
/WikiTemplate/Desktop/wikitemplate.md:
--------------------------------------------------------------------------------
1 | ### Installer
2 |
3 | - [ ] Check the installer is close to the size of the last release
4 | - [ ] Check signature:
5 | - [ ] If macOS, using `arm64` binary run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`
6 | - [ ] If macOS, using `universal` binary run `spctl --assess --verbose` for the installed version and make sure it returns `accepted`
7 | - [ ] If Windows right click on the `brave_installer-x64.exe` and go to Properties, go to the Digital Signatures tab and double click on the signature. Make sure it says "The digital signature is OK" in the popup window
8 |
9 | ### About pages
10 |
11 | - [ ] Verify that both `chrome://` and `about://` forward to `brave://` (run through several internal pages)
12 |
13 | ### Adblock lists and filters
14 |
15 | - [ ] Navigate to `brave://adblock` and confirm you are redirected to `brave://settings/shields/filters`
16 | - [ ] Filter lists
17 | - [ ] Type "cookie" into the "Filter lists" search box, and verify that the list is filtered down to just the `Easylist-Cookie List - Filter Obtrusive Cookie Notices`
18 | - [ ] Enable the `Easylist-Cookie List` and refresh the page
19 | - [ ] Expand the regional filter lists and verify that the cookie list is still enabled
20 | - [ ] Add custom filter lists
21 | - [ ] Enter `https://raw.githubusercontent.com/ryanbr/fanboy-adblock/master/fanboy-antifonts.txt` into `Enter filter list URL` and press `Add`
22 | - [ ] Ensure that the `Custom lists` table appears, with the newly added entry; `Last updated` should be now (e.g. `0 seconds ago`)
23 | - [ ] Refresh the page after a few seconds and ensure that the `Last updated` time reflects the time that has passed
24 | - [ ] Use the dropdown next to the entry and verify that all options (`Update now`, `View source`, `Unsubscribe`) are shown
25 | - [ ] Pressing the `Update now` button should update the timestamp appropriately
26 | - [ ] `View source` should open the text of the filter list
27 | - [ ] `Unsubscribe` should delete the entry from the list and hide the table once again
28 | - [ ] Create custom filters
29 | - [ ] The `Create custom filters` section should be visible with a text box and `Save changes` button
30 | - [ ] Adding text to the box, pressing `Save changes`, and refreshing the page should result in the same text appearing in the box after the reload
31 |
32 | ### Importing
33 |
34 | - [ ] Verify that you can import `History`, `Favorites/Bookmarks` and `Passwords` from Google Chrome
35 | - [ ] Verify that you can import `History` and `Bookmarks` from Firefox
36 | - [ ] Verify that you can import `Favorites/Bookmarks` from Microsoft Edge
37 | - [ ] Verify that importing bookmarks using `Bookmark HTML File` retains the folder structure on a clean profile
38 |
39 | ### Context menus
40 |
41 | - [ ] Verify you can block a page element using `Block element via selector` context-menu item
42 | - [ ] Verify selecting `Manage custom filters` opens `brave://adblock` in a NTP
43 | - [ ] Verify removing the rule from `brave://adblock` reflects the change on the website, after reload
44 |
45 | ### Extensions/Plugins
46 |
47 | - [ ] Verify pdfium, Torrent viewer extensions are installed automatically on fresh profile and cannot be disabled (they don't show up in `brave://extensions`)
48 | - [ ] Verify older version of an extension gets updated to new version via Google server
49 | - [ ] Verify that `magnet` links and `.torrent` files correctly open WebTorrent and you're able to download the file(s)
50 | - **Tip:** Free torrents available via https://webtorrent.io/free-torrents
51 |
52 | ### IPFS
53 |
54 | - [ ] Load `vitalik.eth`. Click on `Proceed using Infura server`. Confirm no IPFS interstitial page is shown. Verify the content is loaded via public gateway.
55 |
56 | ### Chrome Web Store (CWS)
57 |
58 | - [ ] Verify that installing https://chrome.google.com/webstore/detail/adblock-plus-free-ad-bloc/cfhdojbkjhnklbpkdaibdccddilifddb from CWS displays the `Brave has not reviewed the extension.` warning via the "Add Extension" modal
59 |
60 | ### Manifest V2 Extensions
61 |
62 | - [ ] Under `brave://settings/extensions/v2` toggle "Enable NoScript" on. Be sure to turn off any other extensions listed here if they are on.
63 | - [ ] Navigate to https://underpassapp.com/StopTheScript/noscript.html and confirm that the page says "JavaScript is disabled".
64 | - [ ] Confirm you can open the extension's panel without any errors.
65 | - [ ] Under `brave://settings/extensions/v2` toggle "Enable uBlock Origin" on. Be sure to turn off any other extensions listed here if they are on.
66 | - [ ] Navigate to a site which contains ads and toggle shields off. Reload the page and confirm ads are still blocked.
67 | - [ ] Confirm you can open the extension's panel without any errors.
68 | - [ ] Confirm panel reflects that items are blocked as expected.
69 | - [ ] Under `brave://settings/extensions/v2` toggle "Enable uMatrix" on. Be sure to turn off any other extensions listed here if they are on.
70 | - [ ] Navigate to a site which contains ads and toggle shields off. Reload the page and confirm ads are still blocked.
71 | - [ ] Confirm you can open the extension's panel without any errors.
72 | - [ ] Confirm panel reflects that items are blocked as expected.
73 | - [ ] Under `brave://settings/extensions/v2` toggle "Enable AdGuard" on. Be sure to turn off any other extensions listed here if they are on.
74 | - [ ] Navigate to a site which contains ads and toggle shields off. Reload the page and confirm ads are still blocked.
75 | - [ ] Confirm you can open the extension's panel without any errors.
76 | - [ ] Confirm panel reflects that items are blocked as expected.
77 |
78 | ### PDF
79 |
80 | - [ ] Test that you can print a PDF
81 | - [ ] Test that PDF is loaded over HTTPS at https://basicattentiontoken.org/BasicAttentionTokenWhitePaper-4.pdf
82 | - [ ] Test that PDF is loaded over HTTP at http://www.pdf995.com/samples/pdf.pdf
83 |
84 | ### Widevine
85 |
86 | - [ ] Verify `Widevine Notification` is shown when you visit Netflix for the first time
87 | - [ ] Test that you can stream on Netflix on a fresh profile after installing Widevine
88 | - [ ] Verify `Widevine Notification` is shown when you visit HBO Max for the first time
89 | - [ ] Test that you can stream on HBO Max on a fresh profile after installing Widevine
90 | - [ ] If macOS, run the above Widevine tests for both `arm64` and `universal` builds
91 |
92 | ### Geolocation
93 |
94 | - [ ] Check that https://browserleaks.com/geo works and shows correct location
95 | - [ ] Check that https://html5demos.com/geo/ works but doesn't require an accurate location
96 |
97 | ### Crash Reporting
98 |
99 | - [ ] Check that loading `brave://crash` & `brave://gpucrash` causes the new tab to crash
100 | - [ ] Check that `brave://crashes` lists the `Uploaded Crash Report ID` once the report has been submitted
101 | - [ ] Verify the crash ID matches the report on Backtrace using `_rxid equal [ value ]`
102 |
103 | ### Bravery settings
104 |
105 | - [ ] Verify that HTTPS Everywhere works by loading http://https-everywhere.badssl.com/
106 | - [ ] Turning HTTPS Everywhere off and Shields off both disable the redirect to https://https-everywhere.badssl.com/
107 | - [ ] Verify that toggling `Trackers & ads blocked` works as expected
108 | - [ ] Visit https://testsafebrowsing.appspot.com/s/phishing.html, verify that Safe Browsing (via our Proxy) works for all the listed items
109 | - [ ] Visit https://www.blizzard.com and then turn on script blocking, page should not load.
110 | - [ ] Test that 3rd party storage results are blank at https://jsfiddle.net/7ke9r14a/9/ when 3rd party cookies are blocked and not blank when 3rd party cookies are unblocked
111 | - [ ] Test that https://mixed-script.badssl.com/ shows up as grey not red (no mixed content scripts are run)
112 | - [ ] In `brave://settings/security`, choose a DNS provider from the providers listed under Use secure DNS, load `https://browserleaks.com/dns`, and verify your ISP's DNS resolvers aren't detected and shown; only your chosen DoH provider should appear.
113 | - [ ] Open a New Private Window with Tor, load `https://browserleaks.com/dns`, and verify your ISP's DNS resolvers aren't detected and shown.
114 |
115 | ### Query Filter
116 |
117 | - [ ] Visit https://fmarier.github.io/brave-testing/query-filter.html in a Private window and run the tests as directed
118 |
119 | ### TLS Pinning
120 |
121 | - [ ] Visit https://ssl-pinning.someblog.org/ and verify a pinning error is displayed
122 | - [ ] Visit https://pinning-test.badssl.com/ and verify a pinning error is **not** displayed
123 |
124 | ### Fingerprint Tests
125 |
126 | - [ ] Test that https://diafygi.github.io/webrtc-ips/ doesn't leak IP address for each option under `Settings -> Privacy and Security -> WebRTC IP handling policy`
127 |
128 | ### Brave Ads
129 |
130 | - [ ] Verify when you enable Rewards from panel or `brave://rewards`, Ads are enabled by default
131 | - [ ] Verify Ads UI (panel, settings, etc) shows when in a region with Ads support
132 | - [ ] Verify Ads UI (panel, settings, etc) does not show when in a region without Ads support. Verify the Ads panel does show the 'Sorry! Ads are not yet available in your region.' message.
133 | - [ ] Verify when the system language is English, the Browser language is French, and you are in one of the supported regions, Ad notifications are still served to you.
134 | - [ ] Verify you are served Ad notifications when Ads are enabled
135 | - [ ] Verify ad earnings are reflected in the rewards widget on the NTP.
136 | - [ ] Verify when Ads are toggled off, there are no Ad messages in the logs
137 | - [ ] Verify when Rewards are toggled off (but Ads were not explicitly toggled off), there are no Ads logs recorded
138 | - [ ] Verify view/click/dismiss/landed ad notifications show in `confirmations.json`
139 | - [ ] Verify pages you browse to are being classified in the logs
140 | - [ ] Verify tokens are redeemed by viewing the logs (you can use `--rewards=debug=true` to shorten redemption time)
141 | - [ ] Verify Ad is not shown if a tab is playing media and is only shown after it stops playing
142 |
143 | ### Rewards
144 |
145 | - [ ] Verify that none of the reward endpoints are being contacted when a user visits a media creator (`youtube.com`, `reddit.com`, `twitter.com`, `github.com`) and hasn't joined rewards
146 | - [ ] Verify that `rewards.brave.com`, `pcdn.brave.com`, `grant.rewards.brave.com` or `api.rewards.brave.com` are not being contacted
147 | - [ ] Verify you are able to create a new Rewards profile and are in the unverified state by default
148 | - [ ] Verify when you visit a creator in this state the panel shows a prompt to connect a custodian and no BAT information (earnings, balance, etc) is displayed
149 | - [ ] Verify when you view the NTP widget in this state it shows a prompt to connect a custodian and no BAT information (earnings, balance, etc) is displayed
150 | - [ ] Verify when you visit brave://rewards in this state there are no Auto Contribution, Tipping, or summary panels on this page
151 | - [ ] Verify you can toggle notification ads off/on from the "Manage Brave Ads" panel on brave://rewards
152 | - [ ] Verify you are able to connect a custodian
153 | - [ ] Verify Rewards balance shows correct BAT and USD value on brave://rewards, panel, and NTP widget after you connect
154 | - [ ] Verify when you click on the BR panel while on a site, the panel displays site-specific information (site favicon, domain, attention %)
155 | - [ ] Verify BR panel shows message about an unverified creator
156 | - [ ] Verify "Send Contribution" button is grayed out on the panel for an unverified creator and the tip banner cannot be accessed
157 | - [ ] Verify tip banner shows message about a creator with a different custodian
158 | - [ ] Verify you are able to tip a creator who has the same custodian as you
159 | - [ ] Verify you are able to perform an auto contribution
160 | - [ ] Verify if you disable auto-contribute you are still able to tip creators
161 | - [ ] Verify if auto-contribute is disabled AC does not occur
162 | - [ ] Verify that there is no "Disconnect" option once connected to a custodian
163 | - [ ] Verify that you are able to reset rewards
164 | - [ ] Verify that after rewards are reset, you are now in the non-opted in state
165 | - [ ] Verify you can re-join rewards and the panel, brave://rewards page, and NTP widget are now in the unverified state
166 |
167 | ### Social-media blocking settings
168 |
169 | - [ ] Verify individual `Social media blocking` buttons works as intended when enabled/disabled by visiting https://fmarier.github.io/brave-testing/social-widgets.html
170 | - [ ] ensure that you can log in into https://www.expensify.com while `Allow use of third-party cookies for legacy Google Sign-In` is enabled
171 | - [ ] ensure that once `Allow use of third-party cookies for legacy Google Sign-In` has been disabled, you can't log in into https://www.expensify.com
172 |
173 | ### Sync
174 |
175 | - [ ] Verify you are able to create a sync chain and add a mobile/computer to the chain
176 | - [ ] Verify you are able to join an existing sync chain using code words
177 | - [ ] Verify the device name is shown properly when sync chain is created
178 | - [ ] Verify you are able to add a new mobile device to the chain via QR code/code words
179 | - [ ] Verify newly created bookmarks get sync'd to all devices on the sync chain
180 | - [ ] Verify existing bookmarks on current profile gets sync'd to all devices on the sync chain
181 | - [ ] Verify folder structure is retained after sync completes
182 | - [ ] Verify bookmarks don't duplicate when sync'd from other devices
183 | - [ ] Verify removing bookmark from device gets sync'd to all devices on the sync chain
184 | - [ ] Verify adding/removing a bookmark in offline mode gets sync'd to all devices on the sync chain when device comes online
185 | - [ ] With only two devices in chain, verify removing the other device resets the sync on b-c as well
186 |
187 | ### Tor Tabs
188 |
189 | - [ ] Visit https://check.torproject.org in a Tor window, ensure it shows a success message for using a Tor exit node
190 | - [ ] Visit https://check.torproject.org in a Tor window, note down exit node IP address. Do a hard refresh (Ctrl+Shift+R/Cmd+Shift+R), ensure exit IP changes after page reloads
191 | - [ ] Visit https://check.torproject.org in a Tor window, note down exit node IP address. Click `New Tor connection for this site` in app menu, ensure the exit node IP address changes after page is reloaded
192 | - [ ] Visit https://protonmailrmez3lotccipshtkleegetolb73fuirgj7r4o4vfu7ozyd.onion, https://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/, and https://search.brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/ in a Tor window and ensure all pages resolve
193 | - [ ] Visit https://browserleaks.com/geo in a Tor window, ensure location isn't shown
194 | - [ ] Verify Torrent viewer doesn't load in a Tor window
195 | - [ ] Ensure you are able to download a file in a Tor window. Verify all Download/Cancel, Download/Retry and Download works in Tor window
196 |
197 | ### Cookie and Cache
198 |
199 | - [ ] Go to http://samy.pl/evercookie/ and set an evercookie. Check that going to prefs, clearing site data and cache, and going back to the evercookie site does not remember the old evercookie value
200 |
201 | ### Chromium/Brave GPU
202 |
203 | - [ ] Verify that `brave://gpu` (Brave) matches `chrome://gpu` (Chrome) when using the same Chromium version
204 |
205 | ### Startup & Components
206 |
207 | - [ ] Verify that Brave is only contacting `*.brave.com` endpoints on first launch using either `Charles Proxy`, `Fiddler`, `Wireshark` or `LittleSnitch` (or a similar application)
208 | - [ ] Verify that opening a NTP doesn't trigger any outbound connections related to widgets without user interaction
209 | - [ ] Remove the following component folders and ensure that they're being re-downloaded after restarting the browser:
210 | - [ ] `afalakplffnnnlkncjhbmahjfjhmlkal`: `AutoplayWhitelist.dat`, `ExtensionWhitelist.dat`, `ReferrerWhitelist.json` and `Greaselion.json`
211 | - [ ] `CertificateRevocation`
212 | - [ ] `cffkpbalmllkdoenhmdmpbkajipdjfam`: `rs-ABPFilterParserData.dat` & `regional_catalog.json` (AdBlock)
213 | - [ ] `gccbbckogglekeggclmmekihdgdpdgoe`: (Sponsored New Tab Images)
214 | - [ ] `Safe Browsing`
215 | - [ ] Restart the browser, load `brave://components`, wait for 8 mins and verify that no component shows any errors
216 |
217 | **Note:** Always double check `brave://components` to make sure there's no errors/missing version numbers
218 |
219 | ### Session storage
220 |
221 | - [ ] Temporarily move away your browser profile and test that a new profile is created on browser relaunch
222 | - macOS - `~/Library/Application\ Support/BraveSoftware/`
223 | - Windows - `%userprofile%\appdata\Local\BraveSoftware\`
224 | - Linux(Ubuntu) - `~/.config/BraveSoftware/`
225 | - [ ] Test that both windows and tabs are being restored, including the current active tab
226 | - [ ] Ensure that tabs are being lazy loaded when a previous session is being restored
227 |
228 | ### Upgrade
229 |
230 | - [ ] Make sure that data from the last version appears in the new version OK
231 | - [ ] Ensure that `brave://version` lists the expected Brave & Chromium versions
232 | - [ ] With data from the last version, verify that:
233 | - [ ] Bookmarks on the bookmark toolbar and bookmark folders can be opened
234 | - [ ] Cookies are preserved
235 | - [ ] Installed extensions are retained and work correctly
236 | - [ ] Opened tabs can be reloaded
237 | - [ ] Stored passwords are preserved
238 | - [ ] Sync chain created in previous version is retained
239 | - [ ] Social media-blocking buttons changes are retained
240 | - [ ] Custom filters under brave://settings/shields/filters are retained
241 | - [ ] Custom lists under brave://settings/shields/filters are retained
242 | - [ ] Rewards
243 | - [ ] BAT balance is retained
244 | - [ ] Auto-contribute list is retained
245 | - [ ] Both Tips and Monthly Contributions are retained
246 | - [ ] Panel transactions list is retained
247 | - [ ] Changes to rewards settings are retained
248 | - [ ] Ensure that Auto Contribute is not being enabled when upgrading to a new version if AC was disabled
249 | - [ ] Ads
250 | - [ ] Both `Estimated pending rewards` & `Ad notifications received this month` are retained
251 | - [ ] Changes to ads settings are retained
252 | - [ ] Ensure that ads are not being enabled when upgrading to a new version if they were disabled
253 | - [ ] Ensure that ads are not disabled when upgrading to a new version if they were enabled
254 |
--------------------------------------------------------------------------------
/WikiTemplate/Goupdater/wikitemplate-goupdate.md:
--------------------------------------------------------------------------------
1 | ## Process
2 |
3 | - [ ] Request approval by reviewers for the go-update PR
4 | - [ ] Once approved, create an issue in [`devops repository`](https://github.com/brave/devops/issues) to request deployment of the approved branch to dev environment
5 | - [ ] Request sign-off from @qa-team by testing the changes in dev environment. To use the dev environment, you can use `--use-dev-goupdater-url` with Brave Browser.
6 | - [ ] Merge the changes in go-update to `master`
7 | - [ ] Create an issue in devops to request deployment of the master branch to production environment.
8 | - [ ] Run through the test plan in the PR, once deployed in production.
9 |
10 | ## Test Plan
11 |
12 | Running these tests in addition to the test plan specified for the issue ensures that `go-update` is working correctly.
13 |
14 | - [ ] Open a clean brave-browser profile and verify the following components are updated correctly:
15 | - Brave Local Data Updater
16 | - Brave Ad Block Update
17 | - Brave Tor Client Updater (Mac/Win/Linux)
18 | - NTP Sponsored Images (Locale)
19 | - CRLSet
20 | - Brave SpeedReader Updater
21 | - Brave HTTPS Everywhere Updater
22 |
23 | - Using little snitch/fiddler confirm that there are no direct connections to non-brave/bravesoftware domains.
24 | - We don't proxy request for tor download on development server. So you'll see one request to `amazonaws.com`
25 |
26 | - [ ] **Brave-Local-Data:**
27 | - Navigate to `https://chrome.google.com/webstore/detail/1password-extension-deskt/aomjjhallfgjeglblehebfpbcfeobpgk` and confirm that the extension not verified warning is not displayed.
28 |
29 | 
30 |
31 | - [ ] **Brave Ad-Block Update:**
32 | - Navigate to cnn.com - and verify you are able to see ads and trackers blocked
33 |
34 | 
35 |
36 | - [ ] **Brave Tor Client Updater:**
37 | - Open `Private Window with Tor`
38 | - Navigate to `check.torproject.org` and verify tor works.
39 |
40 | - [ ] **NTP Sponsored Images (Locale):**
41 | - Open 4 new-tab pages
42 | - Verify one of them has the sponsored image
43 |
44 | - [ ] **CRLSet:**
45 | - Navigate to `https://revoked.badssl.com/` and confirm SSL warnings are displayed
46 |
47 | - [ ] **Brave HTTPS Everywhere Updater:**
48 | - Navigate to `http://https-everywhere.badssl.com/` - and verify the shield count for HTTPS Everywhere is updated.
49 |
50 | 
51 |
52 | - [ ] **Widevine Content Decryption Module:**
53 | - Navigate to `https://bitmovin.com/demos/drm` - Verify that the modal to install Widevine is displayed.
54 | - Install Widevine
55 | - Navigate to brave://components and verify the component is successfully installed
56 | - Verify that videos play successfully
57 |
58 |
59 |
--------------------------------------------------------------------------------
/WikiTemplate/IPFS/wikitemplate-IPFS.md:
--------------------------------------------------------------------------------
1 | # IPFS on Desktop
2 |
3 |
4 | ## Installation & Setup
5 |
6 | ### `IPFS installation`
7 |
8 | - [ ] Verify going to `brave://ipfs` and clicking on `Install and start` installs and shows the latest [`go-ipfs` release](https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md), via the `Version:` section under `Node info`.
9 |
10 | ### `Seed profile`
11 |
12 | - [ ] Load `ipns://en.wikipedia-on-ipfs.org`.
13 | - [ ] Choose `Use a Brave local IPFS node`.
14 | - [ ] Run the `IPNS Keys` (add/rotate) section.
15 | - [ ] Run the `Import and Sharing` (page, image, text, video) section.
16 |
17 | ### `go-updater node update`
18 |
19 | - [ ] Verify, using the above profile, that restarting Brave with `--use-dev-goupdater-url`, and clicking on `Restart` via `brave://ipfs` downloads and installs the latest in-development (release) candidate.
20 | - [ ] Confirm that `Method to resolve IPFS resources` is `Brave local IPFS node` in `brave://settings/ipfs`.
21 | - [ ] Confirm that keys and imports are intact, post-migration.
22 | - [ ] Confirm that `brave://ipfs-internals` shows `Node is not running` under `IPFS node status`, with a `Start` button.
23 | - [ ] Click on `Start`.
24 | - [ ] Confirm the node starts, and paths and version info are correct.
25 |
26 | ### `Config`
27 |
28 | - [ ] Verify changing `Maximum IPFS cache size (GB)` on the `brave://settings/ipfs` page (set `Method to resolve IPFS resources` to `Brave local IPFS node` on `brave://settings/ipfs`), the new value is reflected on the diagnostic page (`brave://ipfs`) in the `Repo Stats -> Size` section.
29 |
30 | ## Diagnostic page (`brave://ipfs`)
31 |
32 | - [ ] Verify loading `brave://ipfs` redirects to `brave://ipfs-internals`.
33 | - [ ] Verify, on a clean profile, visiting `brave://ipfs` will present you with an `Install and start` button, which will install and start an IPFS local node. Confirm you see `Node is running` under `IPFS node status`, `Stop`, `Restart`, and `My Node` buttons, and a dynamically updating `Connected peers:` count.
34 | - [ ] Verify that clicking `Stop` temporarily clears all statistics, paths, and config information.
35 | - [ ] Verify that clicking `Start` populates all statistics, paths, and config information, and you see `Stop`, `Restart`, and `My Node` buttons, along with a dynamically updating `Connected peers:` count.
36 | - [ ] Verify that clicking `Restart` clears and then repopulates all stats, paths, and config information, and you see `Stop`, `Restart`, and `My Node` buttons, along with a dynamically updating `Connected peers:` count.
37 | - [ ] Verify that clicking on `(details)` to the right of `Connected peers:` takes you to the `PEERS` pane of `127.0.0.1:45002/ipfs/bafy..../#/` and you see a global map with a dynamically updating peer count and listing, below.
38 | - [ ] Verify that clicking on `Perform a garbage collection sweep` resets and repopulates the `Objects:` and `Size:` stats beneath `Repo Stats`.
39 | - [ ] Verify that clicking `My Node` takes you to the `Status` pane of the IPFS dashboard, with a URL similar to `127.0.0.1:45002/ipfs/bafy..../#/`, where you see `Connected to IPFS`, MB count of files shared, and dynamically updating peers count, as well as your `PEER ID` and `AGENT`.
40 |
41 | ## Import and Sharing
42 |
43 | - [ ] Prerequisites: Brave local IPFS node launched and local gateway configured. On a new profile, loading `ipns://en.wikipedia-on-ipfs.org` and clicking `Use a Brave local IPFS node` on the interstitial page will set you up.
44 |
45 | ### `Importing a page via IPFS`
46 |
47 | - [ ] Load `wikipedia.org`. Context-click the page and select `Import to IPFS > This page`.
48 | - [ ] Verify the content is downloaded and imported successfully.
49 | - [ ] Verify the import folder is opened upon successful import.
50 | - [ ] Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
51 |
52 | ### `Importing linked content`
53 |
54 | - [ ] Load `https://search.brave.com/search?q=hiddenmickeys&source=desktop`. Context-click the first link there and select `Import to IPFS > Linked content`.
55 | - [ ] Verify the content is downloaded and imported successfully.
56 | - [ ] Verify the import folder is opened upon successful import.
57 | - [ ] Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
58 |
59 | ### `Importing selected audio`
60 |
61 | - [ ] Load `https://samplelib.com/sample-mp3.html`. Context-click any audio file and select `Import to IPFS > Selected audio`.
62 | - [ ] Verify the audio is downloaded and imported successfully.
63 | - [ ] Verify the import folder opens upon successful import.
64 | - [ ] Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
65 |
66 | ### `Importing selected image`
67 |
68 | - [ ] Verify you are able to import an image by visiting `search.brave.com`, right-clicking on the logo, and choosing `Import to IPFS > Selected image.`
69 | - [ ] Verify the image is downloaded and imported successfully.
70 | - [ ] Verify the import folder opens upon successful import.
71 | - [ ] Verify the shareable link is copied to the clipboard, and pasting the link in a new tab opens it.
72 |
73 | ### `Importing selected text`
74 |
75 | - [ ] Load `https://lipsum.com/` and make a text selection. Context-click and choose `Import Selected Text to IPFS`.
76 | - [ ] Verify the text is wrapped into a file with id like `file_1` and the imported text is readable inside the file.
77 | - [ ] Verify the import folder opens upon successful import.
78 | - [ ] Verify the shareable link is copied to the clipboard and opens when pasting it into a new tab.
79 |
80 | ### `Importing selected video`
81 |
82 | - [ ] Load the [Big Buck Bunny test file](https://upload.wikimedia.org/wikipedia/commons/c/c0/Big_Buck_Bunny_4K.webm). Verify you are able to import the video via context menu `Import to IPFS > Selected video`.
83 | - [ ] Verify the video is downloaded and imported successfully.
84 | - [ ] Verify the import folder opens upon successful import.
85 | - [ ] Verify the shareable link is copied to the clipboard and opens when pasting in a new tab.
86 |
87 | Note: For the other types, downloading from the IPFS webui (My Node) and ensuring they still play in a media player, is enough.
88 |
89 | ### `Sharing a local file using IPFS (without IPNS keys)`
90 |
91 | - [ ] Verify the IPFS item is available in the main app menu. Go to `IPFS -> Share Local File Using IPFS` select and import any local file.
92 | - [ ] Verify the file is downloaded and imported successfully,
93 | - [ ] Verify the import folder is opened upon successful completion.
94 | - [ ] Verify the shareable link starting with `https://dweb.link/ipfs/` is copied to the clipboard, and opens when pasting into a new tab.
95 | - [ ] Share the following filetypes:
96 | - [ ] .txt
97 | - [ ] .json
98 | - [ ] .mpeg
99 | - [ ] .mp3
100 | - [ ] .mp4
101 | - [ ] .ogg
102 | - [ ] .webm
103 |
104 | ### `Sharing a local folder using IPFS (without IPNS keys)`
105 |
106 | - [ ] Go to `IPFS -> share Local Folder Using IPFS`, and select and import any local folder.
107 | - [ ] Verify the whole folder is downloaded and imported successfully.
108 | - [ ] Verify the import folder opens upon successful import.
109 | - [ ] Verify the shareable link is copied to the clipboard, and opens when pasting into a new tab.
110 |
111 | ## Address bar
112 |
113 | ### Badge shown only when IPFS support is enabled
114 |
115 | - [ ] Verify, on a new profile, you can load `https://en.wikipedia-on-ipfs.org`, switch `Method to resolve IPFS resources` to either `Gateway` or `Brave local IPFS node` in `brave://settings/ipfs`, and then see an `IPFS` badge/icon in the URL bar.
116 |
117 |
118 | ### Badge on a public gateway
119 |
120 | - [ ] Verify that loading `https://dweb.link/ipfs/QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX/wiki/Mars.html` redirects you seamlessly to `https://bafybeicgmdpvw4duutrmdxl4a7gc52sxyuk7nz5gby77afwdteh3jc5bqa.ipfs.dweb.link/wiki/Mars.html`, and there's an `IPFS` badge/button in the URL bar. Confirm that clicking `IPFS` goes to `ipfs://bafybeicgmdpvw4duutrmdxl4a7gc52sxyuk7nz5gby77afwdteh3jc5bqa/wiki/Mars.html`.
121 | - [ ] Verify that loading `https://ipfs.io/ipns/libp2p.io/` shows an `IPFS` button in the URL bar, and clicking it redirects to `ipns://libp2p.io/`. Confirm it resolves and loads.
122 |
123 | ### Badge on DNSlink websites
124 |
125 | - [ ] Verify clicking on the `IPFS` badge/button on https://blog.ipfs.tech loads `ipns://blog.ipfs.tech` in a new tab.
126 | - [ ] Verify clicking on the `IPFS` badge/button on https://en.wikipedia-on-ipfs.org/wiki/Asia/?foo=bar#Economy loads `ipns://en.wikipedia-on-ipfs.org/wiki/Asia/?foo=bar#Economy` in a new tab.
127 |
128 | ### Badge only on real IPFS resources
129 |
130 | - [ ] Verify https://github.com/ipns/google.com shows no `IPFS` badge/icon in the URL bar (`/ipns/google.com` → `google.com` is not a valid CID, nor it is a DNS name with DNSLink TXT record → not IPFS resource)
131 | - [ ] Verify https://github.com/ipfs/boxo shows no `IPFS` badge/icon in the URL bar (`ipfs/boxo` → `boxo` is not a valid CID → not IPFS resource → no purple button)
132 |
133 | ### Protocol info popup
134 |
135 | - [ ] Load `ipns://brantly.eth` while using `Brave local IPFS node` for the resolver, and confirm there's a clickable info badge "IPFS" to the left of the URL, with on click pop-up that says `This content was loaded over the IPFS protocol.`
136 |
137 | ## Automatic redirects to IPFS
138 |
139 | - [ ] Via `brave://settings/ipfs`, set `Redirect IPFS resources to the configured IPFS gateway` to `On`.
140 | - [ ] Load `https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR` and confirm it redirects to `ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi`.
141 | - [ ] Load `https://en.wikipedia-on-ipfs.org/wiki/` and confirm it redirects to `ipns://en.wikipedia-on-ipfs.org/wiki/`.
142 |
143 |
144 | ## IPFS Companion
145 |
146 | - [ ] Verify that toggling `IPFS Companion` to `On` via `brave://settings/ipfs` prompts you to install the extension. After clicking `Add extension`, confirm you get a notification that IPFS Companion was added to Brave, and are then taken to the `Set your IPFS preference` interstitial page.
147 | - [ ] Verify that clicking on the puzzle-piece icon on the browser toolbar, then `IPFS Companion`, will load a popup.
148 | - [ ] Click on the gears (settings) icon and confirm it loads the `Companion Preferences` page.
149 | - [ ] Click on `My Node` and confirm it opens the same ipfs-webui interface as `My Node` at `brave://ipfs-internals`
150 |
151 | ## IPFS URLs
152 |
153 | - [ ] Ensure each of the following IPFS URLs load over both `Gateway` and `Brave local IPFS node` modes:
154 | - [ ] `ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html#Life`
155 | - [ ] `ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/`
156 | - [ ] `ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Tokyo_National_Museum.html`
157 | - [ ] `ipfs:QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme`
158 |
159 | ## IPNS URLs
160 |
161 | - [ ] Ensure each of the following IPNS URLs load over both `Gateway` and `Brave local IPFS node` modes:
162 | - [ ] `ipns://en.wikipedia-on-ipfs.org`
163 | - [ ] `ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands`
164 | - [ ] `ipns://docs.ipfs.io`
165 | - [ ] `ipns://brantly.eth` (ENS)
166 | - [ ] `ipns://vitalik.eth` (ENS)
167 | - [ ] `ipns://brad.crypto` (Unstoppable Domains)
168 |
169 | ## Gateway choice
170 |
171 | ## The interstitial page
172 |
173 | - [ ] Confirm a fresh profile has `Method to resolve IPFS resources` set to `Ask` in `brave://settings/ipfs`.
174 | - [ ] Verify visiting `ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi` loads the interstitial page.
175 | - [ ] Verify visiting `ipns://en.wikipedia-on-ipfs.org` in a new tab loads the same interstitial page.
176 | - [ ] Verify selecting `Use a public gateway` loads `https://dweb.link/ipns/en.wikipedia-on-ipfs.org/wiki/` which then redirect to unique Origin at `https://en-wikipedia--on--ipfs-org.ipns.dweb.link/wiki/`.
177 | - [ ] Verify selecting `Use a Brave local IPFS node` loads `ipns://en.wikipedia-on-ipfs.org/wiki/`.
178 |
179 | ### Public Path gateway
180 |
181 | - [ ] Verify, on a new profile, you can't change the IPFS public gateway address to `https://cloudflare-ipfs.com/` via `Settings -> IPFS -> IPFS public gateway address -> Change`.
182 | - [ ] An error stating `Only a valid IPFS gateway with Origin isolation enabled can be used in Brave` is displayed ([example](https://github.com/brave/brave-browser/issues/18212#issuecomment-923632150)).
183 |
184 | ### Public Subdomain Gateway
185 |
186 | - [ ] Verify, on a new profile, you can change the IPFS public gateway address to `https://{YOUR-PUBLIC-GATEWAY}` via `Settings -> IPFS -> IPFS public gateway address -> Change`. Refer to the [IPFS public-gateway list](https://ipfs.github.io/public-gateway-checker/).
187 | - [ ] Verify opening `ipns://en.wikipedia-on-ipfs.org/wiki/` and selecting `Use a public gateway` loads `https://{YOUR-PUBLIC-GATEWAY}/ipns/en.wikipedia-on-ipfs.org/wiki/` which then redirect to unique Origin at `https://en-wikipedia--on--ipfs-org.ipns.{YOUR-PUBLIC-GATEWAY}/wiki/` Verify loads `https://cf-ipfs.com/ipns/en.wikipedia-on-ipfs.org/wiki/` which then redirect to unique Origin at `https://en-wikipedia--on--ipfs-org.ipns.{YOUR-PUBLIC-GATEWAY}/wiki/`.
188 |
189 | ### Protocol system handler/OS integration
190 |
191 | #### ipfs://
192 |
193 | - [ ] Verify (`Windows`) that pressing `Win+R`, typing `open ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege`, and pressing `Enter` opens Brave and loads an HTML page with the word `PASS`.
194 | - [ ] Verify (`macOS`): opening Terminal, and typing `open ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege`, and pressing `Enter` opens Brave and loads an HTML page with the word `PASS`.
195 | - [ ] Verify (`Linux`) that opening a shell and typing `xdg-open ipfs://bafkreigcnxudvpojjfwncmauociy5q46zsq46oe66cxbyzie3imabuoege` and pressing `Enter` opens Brave and loads an HTML page with the word `PASS`.
196 |
197 | #### ipns://
198 |
199 | - [ ] Verify (`Windows`) that pressing `Win+R`, typing `open ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands`, and pressing `Enter` opens Brave and loads an HTML page scrolled to the header `Islands`.
200 | - [ ] Verify (`macOS`): opening Terminal, and typing `open ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands`, and pressing `Enter` opens Brave and loads an HTML page scrolled to the header `Islands`.
201 | - [ ] Verify (`Linux`) that opening a shell and typing `xdg-open ipns://en.wikipedia-on-ipfs.org/wiki/Tokyo#Islands`, and pressing `Enter` opens Brave and loads an HTML page scrolled to the header `Islands`.
202 |
203 |
204 | ## Peers
205 |
206 | - [ ] Prerequisites: Brave local IPFS node launched and local gateway configured on two machines, locally networked (LAN, can be over Wi-Fi).
207 |
208 | ### `Adding`; see [issue 15567](https://github.com/brave/brave-browser/issues/15567#issuecomment-867983572) for full setup steps
209 |
210 | - [ ] Verify when you go to `brave://settings/ipfs/peers` and click on the `Add` button, it prompts you to enter a new peer-connection string. Confirm that entering an incorrect string yields `This name is not valid` upon clicking `Submit`. (Acceptable ones are only CIDs or something like `**/p2p/**` format.)
211 | - [ ] Verify if a peer is added and node is started, it proposes to restart node to apply changes.
212 | - [ ] Verify the Brave local IPFS node is restarted by clicking `Restart` button; happen it shows error message and suggests to see more on diagnostic page.
213 | - [ ] Verify that `Peering.Peers` section of IPFS node config file got updated (either via `My Node → Settings → IPFS Config` or by manually inspecting `brave_ipfs/config` file).
214 |
215 | ### `Removing`
216 |
217 | - [ ] Verify a peer can be removed by clicking on the Trash icon in the peer line.
218 |
219 | ## IPNS Keys
220 |
221 | - [ ] Prerequisites: Brave local IPFS node launched and local gateway configured. Go to `Settings -> IPFS`, there should be an available `Set up your IPNS keys` option, which opens `brave://settings/ipfs/keys`
222 |
223 | ### `Publishing a local file using an IPNS key`
224 |
225 | - [ ] (after [brave/brave-browser#16998](https://github.com/brave/brave-browser/issues/16998) lands) Verify you're able to share a local file via `IPFS -> Share local file using IPNS -> self`.
226 | - [ ] Verify once the file is imported, the import folder is opened and the file can be downloaded.
227 | - [ ] Once the import is successful, verify a shareable link starting with `https://dweb.link/ipns/` is copied to the clipboard by opening a new tab and pasting from the context menu or `CTRL+V`.
228 | - [ ] Verify you see the IPNS key (e.g. `k51q...`) before the `?filename=filename.ext` from the copied text.
229 |
230 | ### `Publishing a local folder using an IPNS key`
231 |
232 | - [ ] (after [brave/brave-browser#16998](https://github.com/brave/brave-browser/issues/16998) lands) Verify you're able to share a local folder via `IPFS > Share local folder using IPNS -> self`.
233 | - [ ] Verify once the file is imported, the import folder is opened and the file can be downloaded.
234 | - [ ] Once the import is successful, verify a shareable link starting with `https://dweb.link/ipns/` is copied to clipboard by opening a new tab and pasting from context menu or `CTRL+V`.
235 | - [ ] Verify you see the IPNS key (e.g. `k51q...`) before the `?filename=filename.ext` from the copied text.
236 |
237 | ### `Importing keys`
238 |
239 | - [ ] Verify adding a new key by clicking on the `Import` button and choosing an existing key file to import.
240 | - [ ] Verify imported key is available with entered name; verify entering `self` will yield `This name cannot be used`.
241 | - [ ] Verify you cannot import keys with the same name; each key name must be unique.
242 |
243 | ### `Publishing content with IPNS key`
244 |
245 | - [ ] Verify keys are available in all import menus in order to pin content by selected key; the import link should contain the selected key.
246 |
247 | ### `Add/Remove/Rotate keys`
248 |
249 | - [ ] Verify when you click `Add`, it prompts for a key name and generates a new key.
250 | - [ ] Verify clicking on `Add` and entering an existing key name shows a `This name cannot be used` error message.
251 | - [ ] Verify clicking on the Rotate key icon for the `self` key prompts for a key name. Enter a valid, unique name and click `Rotate`. Confirm the key is created with your entered name, original hash, and a new `self` key (with a new hash value) is generated.
252 | - [ ] Verify clicking on the 3-dots menu to the right of a key gives you two options: `Export key` and `Remove key`. Choose `Export key` and confirm you get prompted to save the key. Click `Save` and ensure the key is saved to disk. Delete the key from `brave://settings/ipfs/keys` and now click `Add` to confirm the same key as the original is added from disk.
253 | - [ ] Verify clicking on the 3-dots menu and choosing `Remove key` removes the key from the UI.
254 |
255 | ***
256 |
257 | # IPFS on Android
258 |
259 | ### `Public Gateway Setting`
260 |
261 | - [ ] Verify `IPFS Gateway` option is available under `Brave Shields & Privacy`.
262 | - [ ] Verify the setting is enabled by default.
263 | - [ ] Verify disable/enable setting is retained between browser launch/restarts.
264 | - [ ] Verify setting state is retained during upgrade.
265 |
266 | ### `IPFS/IPNS URI`
267 |
268 | - [ ] Verify visiting `ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html` for the first time triggers IPFS interstitial page to select public gateway to load the URI.
269 | - [ ] Verify selecting `Use a public gateway` loads `https://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq.ipfs.dweb.link/wiki/Vincent_van_Gogh.html` via public gateway.
270 | - [ ] Verify visiting `ipns://brad.crypto` brings up IPFS interstitial page (`ipfs://QmTiqc12wo2pBsGa9XsbpavkhrjFiyuSWsKyffvZqVGtut`)
271 | - [ ] Verify selecting `Use a public gateway` loads `https://bafybeicp7gd7s4oljtcesmd7e6vypunw26mv3f5ass5ud7b6jrfebc4ux4.ipfs.dweb.link/` via public gateway.
272 | - [ ] Verify when setting is disabled, loading an `ipfs://` URI or `ipns://` URI doesn't show any interstitial page.
273 | - [ ] Verify `ipfs://` URI or `ipns://` URI doesn't load on a private tab even when the setting is enabled.
274 |
--------------------------------------------------------------------------------
/WikiTemplate/Tor/wikitemplate-tor-Linux.md:
--------------------------------------------------------------------------------
1 | ## Tor Client Updater
2 |
3 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
4 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
5 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
6 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
7 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
8 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
9 |
10 | ### Linux
11 | - [ ] Navigate to `/biahpgbdmdkfgndcmfiipgcebobojjkp`
12 | - [ ] Run `ldd tor--linux-brave-` to confirm tor client is a static binary
13 |
--------------------------------------------------------------------------------
/WikiTemplate/Tor/wikitemplate-tor-Windows.md:
--------------------------------------------------------------------------------
1 | ### **`Windows 11 x64`**
2 |
3 | ### Tor Client Updater
4 |
5 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
6 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
7 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
8 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
9 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
10 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
11 |
12 | ### Windows
13 | - [ ] Setup Windows SDK by downloading - https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
14 | - [ ] Run `"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" verify /pa "C:\Users\\AppData\Local\BraveSoftware\Brave-Browser-\User Data\cpoalefficncklhjfpglfiplenlpccdb\\tor--win-brave-.exe"` to verify if the signature of the binary is correct.
15 |
16 | ### **`Windows 10 x64`**
17 |
18 | ### Tor Client Updater
19 |
20 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
21 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
22 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
23 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
24 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
25 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
26 |
27 | ### Windows
28 | - [ ] Setup Windows SDK by downloading - https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
29 | - [ ] Run `"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" verify /pa "C:\Users\\AppData\Local\BraveSoftware\Brave-Browser-\User Data\cpoalefficncklhjfpglfiplenlpccdb\\tor--win-brave-.exe"` to verify if the signature of the binary is correct.
30 |
31 | ### **`Windows 10 x86`**
32 |
33 | ### Tor Client Updater
34 |
35 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
36 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
37 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
38 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
39 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
40 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
41 |
42 | ### Windows
43 | - [ ] Setup Windows SDK by downloading - https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
44 | - [ ] Run `"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" verify /pa "C:\Users\\AppData\Local\BraveSoftware\Brave-Browser-\User Data\cpoalefficncklhjfpglfiplenlpccdb\\tor--win-brave-.exe"` to verify if the signature of the binary is correct.
45 |
--------------------------------------------------------------------------------
/WikiTemplate/Tor/wikitemplate-tor-macOS(Intel).md:
--------------------------------------------------------------------------------
1 | ### **`macOS 14.x Sonoma`**
2 |
3 | ### Tor Client Updater
4 |
5 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
6 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
7 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
8 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
9 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
10 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
11 |
12 | ### MacOS
13 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
14 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
15 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
16 |
17 | ### **`macOS 13.x Ventura`**
18 |
19 | ### Tor Client Updater
20 |
21 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
22 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
23 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
24 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
25 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
26 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
27 |
28 | ### MacOS
29 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
30 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
31 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
32 |
33 | ### **`macOS 12.x Monterey`**
34 |
35 | ### Tor Client Updater
36 |
37 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
38 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
39 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
40 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
41 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
42 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
43 |
44 | ### MacOS
45 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
46 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
47 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
48 |
49 | ### **`macOS 11.x Big Sur`**
50 |
51 | ### Tor Client Updater
52 |
53 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
54 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
55 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
56 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
57 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
58 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
59 |
60 | ### MacOS
61 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
62 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
63 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
64 |
65 | ### **`macOS 10.15.x Catalina`**
66 |
67 | ### Tor Client Updater
68 |
69 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
70 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
71 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
72 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
73 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
74 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
75 |
76 | ### MacOS
77 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
78 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
79 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
80 |
--------------------------------------------------------------------------------
/WikiTemplate/Tor/wikitemplate-tor-macOS(arm64).md:
--------------------------------------------------------------------------------
1 | ### **`macOS 14.x Sonoma`**
2 |
3 | ### Tor Client Updater
4 |
5 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
6 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
7 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
8 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
9 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
10 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
11 |
12 | ### MacOS
13 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
14 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
15 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
16 |
17 | ### **`macOS 13.x Ventura`**
18 |
19 | ### Tor Client Updater
20 |
21 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
22 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
23 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
24 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
25 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
26 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
27 |
28 | ### MacOS
29 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
30 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
31 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
32 |
--------------------------------------------------------------------------------
/WikiTemplate/Tor/wikitemplate-tor.md:
--------------------------------------------------------------------------------
1 | ## Tor Client Updater
2 |
3 | - [ ] For development go-update-server. Run brave-browser with `--user-data-dir=component-dev --use-dev-goupdater-url` (These flags are only available in v1.7.x). Once the crx is pushed to production run without these flags.
4 | - [ ] Navigate to `brave://components` and verify `Tor Client Updater (OS)` is updated successfully.
5 | - [ ] Open `New Private Window with Tor` and confirm that it starts without any errors.
6 | - [ ] Navigate to `check.torproject.org` and verify that tor is working successfully.
7 | - [ ] Navigate to `brave.com` and `http://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion/` to check if the sites work correctly.
8 | - [ ] Load `brave.com` and `mail.protonmail.com` in a regular Window/Tab and ensure that clicking the `Tor` button in the URL bar correctly launches a Tor window and opens the appropriate `.onion` website.
9 |
10 | ### Windows
11 | - [ ] Setup Windows SDK by downloading - https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
12 | - [ ] Run `"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" verify /pa "C:\Users\\AppData\Local\BraveSoftware\Brave-Browser-\User Data\cpoalefficncklhjfpglfiplenlpccdb\\tor--win-brave-.exe"` to verify if the signature of the binary is correct.
13 |
14 | ### MacOS
15 | - [ ] Navigate to `/Users//Library/Application Support/BraveSoftware/Brave-Browser-/cldoidikboihgcjfkhdeidbpclkineef/`
16 | - [ ] Run `codesign -vvvv tor--darwin-brave-` to confirm codesign is valid
17 | - [ ] For MacOS Catalina (10.15+) - Run `spctl -a -vv -t install tor--darwin-brave-` to verify that the binary is notarized.
18 |
19 | ### Linux
20 | - [ ] Navigate to `/biahpgbdmdkfgndcmfiipgcebobojjkp`
21 | - [ ] Run `ldd tor--linux-brave-` to confirm tor client is a static binary
22 |
--------------------------------------------------------------------------------
/WikiTemplate/iOS/wikitemplate-ios.md:
--------------------------------------------------------------------------------
1 |
2 | ## Installer
3 |
4 | - [ ] Check that installer is close to the size of the last release
5 | - [ ] Check the Brave version in About and make sure it is EXACTLY as expected
6 |
7 | ## Data
8 |
9 | - [ ] Verify that data from the previous build appears in the updated build as expected (bookmarks, history, etc.)
10 | - [ ] Verify that cookies from the previous build are preserved after upgrade
11 | - [ ] Verify saved passwords are retained after upgrade
12 | - [ ] Verify stats are retained after upgrade
13 | - [ ] Verify sync chain created in the previous version is still retained on upgrade
14 | - [ ] Verify per-site settings are preserved after upgrade
15 |
16 | ## Bookmarks
17 |
18 | - [ ] Verify that creating a bookmark works
19 | - [ ] Verify that tapping a bookmark from bookmark manager loads the bookmark
20 | - [ ] Verify that deleting a bookmark works
21 | - [ ] Verify that creating a bookmark folder works
22 | - [ ] Verify that creating a bookmark inside the created folder works
23 | - [ ] Verify that you can add a bookmark directly inside a bookmark folder
24 | - [ ] Verify that you can delete a bookmark in edit mode
25 | - [ ] Verify that you can delete a bookmark folder with bookmarks inside
26 | - [ ] Verify adding a bookmark domain, subpaths is retained and you are successfully able to visit the domain subpath in a new tab
27 | - [ ] Verify adding bookmark for many open tabs works. Ensured opening all bookmarks in `Saved tabs` folder will load all the tabs
28 | - [ ] Verify import and export bookmarks works
29 |
30 | ## Favorites
31 |
32 | - [ ] Verify editing favorites and changing their URLs updates the favicons accordingly
33 | - [ ] Verify that you can remove favorites
34 | - [ ] Verify that you can add new favorites from the `Share with...` menu
35 | - [ ] Verify adding Favorites Widget to home screen and ensure favorites are updated on the widget accordingly
36 |
37 | ## Context menus
38 |
39 | - [ ] Make sure context menu items in the URL bar work
40 | - [ ] Make sure context menu items on content work with no selected text
41 | - [ ] Make sure context menu items on content work with selected text
42 | - [ ] Make sure context menu items on content work inside an editable control (input, textarea, or contenteditable)
43 | - [ ] Verify you can open links in a new tab or private tab. Ensure you can open links in background tabs
44 | - [ ] Verify all actions work in context menu when long pressing on `+` in the toolbar
45 | - [ ] Verify all actions work in context menu when long pressing on tab icon
46 | - [ ] Verify `Recently Closed Tabs` is opened when long pressing `+` icon in tab view
47 |
48 | ## Navigation
49 |
50 | - [ ] Verify search works from the search box on NTP
51 | - [ ] Verify able to perform voice search by pressing the microphone icon in URL bar
52 | - [ ] Verify that searching for `javascript:alert(123)` via the omnibox doesn't do anything/trigger a JS modal
53 | - [ ] Verify changing search engine in settings will update search queries for regular and private tabs
54 | - [ ] Verify tapping on arrow icon for the suggested searches will only populate that search query in the search box
55 | - [ ] Verify scanning QR code from the search box will highlight scanned url
56 | - [ ] Verify all actions in toolbar both in top and bottom positions
57 | - [ ] Verify searching page content using `Find in Page` works
58 | - [ ] Verify navigating social media and video sites does not cause loading issues when scrolling or reloading pages
59 |
60 | ## Navigation [iPad]
61 |
62 | - [ ] Verify user is able to navigate/search using connected hardware keyboard
63 | - [ ] Verify long pressing CMD key will display keyboard shortcuts
64 | - [ ] Ensure the keyboard shortcuts are working
65 | - [ ] Ensure using Brave with `Split View` & `Split Over` works with other apps
66 |
67 | ## Downloads
68 |
69 | - [ ] Verify that you can save an image from a site
70 | - [ ] Verify that you are able to save a GIF image
71 |
72 | ## Reader Mode
73 |
74 | - [ ] Visit `https://theverge.com`, open any article, verify the reader mode icon is shown in the URL bar
75 | - [ ] Verify tapping on the reader mode icon opens the article in reader mode
76 | - [ ] Edit reader mode settings and open different pages in reader mode and verify if the setting is retained across each article
77 | - [ ] Verify reader mode works when toolbar is set as Top Bar and Bottom Bar
78 |
79 | ## Gestures
80 |
81 | - [ ] Verify pinch to zoom in/out gestures work on `https://www.homedepot.com`
82 | - [ ] Verify that the `Page Zoom` handler under `Settings` works
83 | - [ ] Verify that navigating to a different origin resets the zoom
84 | - [ ] Swipe back and forward to navigate, verify this works as expected
85 |
86 | ## Password Managers
87 |
88 | - [ ] Verify tapping on 1Password on the slide-out keyboard launches 1Password app and you're able to select the stored credentials
89 | - [ ] Verify tapping on Bitwarden password manager in the autofill field launches the app and auto-fills the stored data
90 |
91 | ## Shields Settings
92 |
93 | - [ ] Enable all switches in `Settings` and visit a site and disable `Block Scripts`. Kill and relaunch the app and verify if the site Shields settings are retained
94 |
95 | ## Browser Lock
96 |
97 | - [ ] Verify browser lock enables device passcode to lock/unlock the browser
98 | - [ ] Verify swipe up/swipe down with browser in focus doesn't ask for device passcode
99 | - [ ] Verify cancel passcode shows unlock message
100 | - [ ] Remove the app from memory and relaunch, enter a wrong passcode, the browser should not be unlocked
101 | - [ ] Verify cancel fingerprint confirmation/face unlock shows enter passcode window when fingerprint/face unlock is set up on the device
102 |
103 | ## Brave Rewards/Ads
104 |
105 | - [ ] Verify wallet is auto-created after enabling Rewards
106 | - [ ] Verify when you click on the Brave Rewards panel while on a site, the panel displays if the site is verified or not
107 | - [ ] Verify ads are only shown while the app is being used
108 | - [ ] Verify tapping on an ad notification shows the landing page
109 | - [ ] Verify inline-content ads show on Brave News and are correctly redeemed from the server
110 | - [ ] Verify `view`, `clicked`, `landed` and `dismiss` confirmation states are logged based on the action. Ensure these are working for inline ads, ad notifications and New Tab Page ads.
111 |
112 | ## Sync
113 |
114 | - [ ] Verify you are able to join Sync chain by scanning the QR code
115 | - [ ] Verify you are able to join Sync chain using code words
116 | - [ ] Verify you are able to create a Sync chain on the device and add other devices to the chain via QR code/code words
117 | - [ ] Verify that bookmarks from other devices on the chain show up on the mobile device after sync completes
118 | - [ ] Verify newly created bookmarks get synced to all devices on the Sync chain
119 | - [ ] Verify existing bookmarks before joining Sync chain also gets sync'd to all devices on the Sync chain
120 | - [ ] Verify history sync is disabled by default. Enabling it starts sync'ing history items as well (limited to 200 entries)
121 | - [ ] Verify sync works on an upgraded profile and new bookmarks added post-upgrade sync across devices on the chain
122 | - [ ] Verify you can create a standalone Sync chain with one device
123 | - [ ] Verify starting sync chain using segmented tab for other devices. Ensure enabling `Open Tabs` will display tabs from other devices
124 | - [ ] Verify sharing pages with `Send To Your Devices` works as expected
125 | - [ ] Verify `Sync Internals` page data is populated when connected to sync chain
126 | - [ ] Verify when using `Delete Sync Account` will remove all devices connected to sync chain
127 |
128 | ## Playlist & Autoplay
129 |
130 | - [ ] Verify Playlist is enabled by default on a clean install
131 | - [ ] Verify when a site with audio/video is detected, `Playlist` button is shown in URL bar and a notification badge on the menu
132 | - [ ] Verify clicking the `Playlist` button adds audio/video to playlist and initiates offline play
133 | - [ ] Verify adding audio/video to playlist via share menu works as expected
134 | - [ ] Verify adding audio/video to playlist via long press context menu works as expected
135 | - [ ] Verify Autoplay is enabled by default
136 | - [ ] Verify with Autoplay enabled, able to play audio/video automatically
137 | - [ ] Verify with background audio enabled, able to play audio/video with device locked or app in background
138 | - [ ] Verify Playlist media works with CarPlay on iOS devices
139 | - [ ] Verify playback gestures are working in Playlist
140 | - [ ] Verify adding shared folder to playlist using `https://playlist.brave.com/bsa-sample` works. Verify all actions on shared folder are working
141 |
142 | ## Brave News
143 |
144 | - [ ] Verify Brave News opt-in is shown on a clean install
145 | - [ ] Verify once opted-in Brave News starts showing articles
146 | - [ ] Verify inline-content ads are shown on Brave News
147 | - [ ] Verify able to add custom RSS feed to the list of sources. Ensure this is working when entering custom URL manually and through the share menu when at a blog page
148 | - [ ] Verify able to hide content from sources within the `Popular Sources` and `Suggested` categories by long-press on the card
149 | - [ ] Verify adding Top News Brave widget to home screen will display news articles. Ensure tapping on news articles will load in brave
150 |
151 | ## VPN
152 |
153 | - [ ] Verify purchasing VPN subscription will install VPN profile and establish connection
154 | - [ ] Verify tunneling works by navigating to `https://ipinfo.io`
155 | - [ ] Verify changing server region will update VPN connection
156 | - [ ] Verify changing protocol from WireGuard to IKEv2 works as expected
157 | - [ ] Verify `Reset Configuration` will reset everything but the region selected
158 |
159 | ## Bravery settings
160 |
161 | - [ ] Check that block ad and unblock ad works on `http://slashdot.org`
162 | - [ ] Check that toggling to blocking and allow ads works as expected. Ensure pre-roll ads are removed on `https://youtube.com`
163 | - [ ] Verify that tapping through a cert error in `https://badssl.com` works
164 | - [ ] Verify Safe Browsing protection on `https://testsafebrowsing.appspot.com/` in the iOS
165 | - [ ] Verify debounce/deAMP settings using `https://dev-pages.brave.software/navigation-tracking/debouncing.html`
166 | - [ ] Verify Block Cookie Consent Notices works when navigating to `https://amazon.co.uk`
167 | - [ ] Verify switch to app dialogs are suppressed when loading `https://reddit.com`, `https://twitter.com` and `https://google.com/maps`
168 | - [ ] Enable `Block Scripts` globally from `Settings`. Visit `https://blizzard.com` and confirm the carousel is disabled at the top of the page. Tap on `Shields` and disable `Block Scripts`; the page content should load properly
169 | - [ ] Enable `Block Scripts` via shields panel under `https://blizzard.com` and then load `https://kkarikos.github.io` and ensure that `Block Scripts` isn't persisting on other websites/navigation.
170 | - [ ] Ensure blocking ads work using `Standard` and `Aggressive` settings
171 | - [ ] Verify that default Brave Shields settings take effect on pages with no site settings
172 | - [ ] Verify that the `Cloudflare` CAPTCHA check under `https://browser-compat.turnstile.workers.dev` passes when clicking on `Verify you are human`.
173 |
174 | ### Fingerprint Tests
175 |
176 | - [ ] Verify that the audio fingerprint is blocked at `https://audiofingerprint.openwpm.com` when fingerprinting protection is on
177 | - [ ] Verify that `https://diafygi.github.io/webrtc-ips/` doesn't leak IP address when `Block all fingerprinting protection` is on
178 | - [ ] Verify fingerprinting test cases in `https://dev-pages.brave.software/fingerprinting/farbling.html`
179 |
180 | ## Content tests
181 |
182 | - [ ] Go to `https://feedly.com` and make sure that the password can be saved. Make sure the saved password is auto-populated when you visit the site again.
183 | - [ ] Open an email on `https://mail.google.com` and tap on a link. Make sure it works
184 | - [ ] Verify that PDF is loaded over `HTTPS` at `https://basicattentiontoken.org/BasicAttentionTokenWhitePaper-4.pdf`
185 | - [ ] Verify that PDF is loaded over `HTTP` at `http://www.pdf995.com/samples/pdf.pdf`
186 | - [ ] Verify that `https://mixed-script.badssl.com` shows up as grey, not red (no mixed-content scripts are run)
187 | - [ ] Verify that "Security Certificate" is shown in the main menu for secured websites
188 |
189 | ## WebAuthn
190 |
191 | - [ ] Verify browser prompts for security key when trying to log in to accounts
192 | - [ ] Verify you are able to successfully authenticate an account using security key when prompted
193 | - [ ] Verify quickly connecting and disconnecting doesn't cause issues authenticating using security keys
194 | - [ ] Verify you are able to use security keys on both normal and private tabs
195 | - [ ] Verify you are able to use security keys to authenticate using NFC
196 |
197 | ## App linker
198 |
199 | - [ ] Long-press on a link in the Twitter app to get the share picker, choose Brave. Verify Brave doesn't crash after opening the link
200 |
201 | ## Session storage
202 |
203 | - [ ] Verify that tabs restore when closed, including active tab
204 | - [ ] Verify that Brave restores/loads without any obvious performance issues when creating a large profile using the following `QA Debug` settings:
205 | - [ ] `Load all QA Links`, `Create 1000 Tabs`, `Create 1000 Bookmark Entries`, `Create 1000 History Entries`
--------------------------------------------------------------------------------
/brave_testrun_generator.py:
--------------------------------------------------------------------------------
1 | from github import Github
2 | import argparse
3 |
4 | parser = argparse.ArgumentParser()
5 | parser.add_argument("-t", "--test",
6 | help="Test Mode, do not create Github issues")
7 |
8 | args = parser.parse_args()
9 |
10 | secret_file = open("github.secret", "r")
11 | token_string = secret_file.readline().rstrip("\n\r")
12 |
13 | g = Github(token_string, timeout=1000)
14 | rate = g.get_rate_limit()
15 | limit = rate.core.limit
16 | remaining = rate.core.remaining
17 |
18 | print("Rate Limit: " + str(limit))
19 | print("Rate Remaining: " + str(remaining))
20 |
21 | bc_repo = g.get_organization("brave").get_repo("brave-browser")
22 | ios_repo = g.get_organization("brave").get_repo("brave-ios")
23 |
24 | checklist = []
25 | release_notes = []
26 | mac_checklist = []
27 | macarm64_checklist = []
28 | win32_checklist = []
29 | win64_checklist = []
30 | linux_checklist = []
31 | iPad_checklist = []
32 | iPhone_checklist = []
33 | iPhoneX_checklist = []
34 | android_arm_checklist = []
35 | android_tab_checklist = []
36 | crypto_wallet_checklist = []
37 |
38 | bc_milestone = {}
39 | for bcmilestone in bc_repo.get_milestones(state="open"):
40 | bc_milestone.update({bcmilestone.title: bcmilestone})
41 |
42 | ios_milestone = {}
43 | for iosmilestone in ios_repo.get_milestones(state="open"):
44 | ios_milestone.update({iosmilestone.title: iosmilestone})
45 |
46 | laptop_key = sorted(bc_milestone.keys())
47 | ios_key = sorted(ios_milestone.keys())
48 |
49 | def laptop_testruns(milestonever):
50 |
51 | wiki_laptop_file = open("WikiTemplate/Desktop/wikitemplate.md", "r")
52 | laptop_template = wiki_laptop_file.read()
53 | wiki_macOS_intel = open("WikiTemplate/Desktop/wikitemplate-macOS-x64.md", "r")
54 | macOS_x64 = wiki_macOS_intel.read()
55 |
56 | for issue in bc_repo.get_issues(
57 | milestone=bc_milestone[milestonever], sort="created",
58 | direction="asc", state="closed"):
59 | if("pull" not in issue.html_url):
60 | original_issue_title = issue.title
61 | issue_title = original_issue_title
62 | if(original_issue_title[0].islower()):
63 | lower = original_issue_title[0]
64 | upper = original_issue_title[0].upper()
65 | issue_title = original_issue_title.replace(lower, upper, 1)
66 |
67 | labels = issue.get_labels()
68 | label_names = []
69 |
70 | for label in labels:
71 | label_names.append(label.name)
72 | if("release-notes/include" in label_names and
73 | "QA/No" not in label_names and
74 | "tests" not in label_names):
75 | output_line = " - " + issue_title + ".([#" +\
76 | str(issue.number) + "](" + issue.html_url + "))"
77 | release_notes.append(output_line)
78 |
79 | if("QA/Yes" in label_names and "QA/No" not in label_names and
80 | "tests" not in label_names):
81 | output_line = " - [ ] " + issue_title + ".([#" +\
82 | str(issue.number) + "](" + issue.html_url + "))"
83 | checklist.append(output_line)
84 | if("QA Pass-macOS-arm64" not in label_names and
85 | "OS/Windows" not in label_names and
86 | "OS/Linux" not in label_names and
87 | "QA/No" not in label_names and
88 | "tests" not in label_names):
89 | macarm64_checklist.append(output_line)
90 |
91 | if("QA Pass-Win64" not in label_names and
92 | "OS/macOS" not in label_names and
93 | "OS/Linux" not in label_names and
94 | "QA/No" not in label_names and
95 | "tests" not in label_names):
96 | win64_checklist.append(output_line)
97 |
98 | if("QA Pass-Linux" not in label_names and
99 | "OS/Windows" not in label_names and
100 | "OS/macOS" not in label_names and
101 | "QA/No" not in label_names and
102 | "tests" not in label_names):
103 | linux_checklist.append(output_line)
104 |
105 | print("\nRelease Notes ")
106 | for line in release_notes:
107 | print(line)
108 | print("")
109 |
110 | print("\nChecklist: ")
111 | for line in checklist:
112 | print(line)
113 | print("")
114 |
115 | print("\nMac Checklist (arm64):")
116 | print(laptop_template)
117 | print("")
118 | macarm64Title = "Manual test run on macOS (arm64) for " + milestonever
119 | macarm64List = ["OS/macOS-arm64",
120 | "release-notes/exclude",
121 | "tests",
122 | "QA/Yes",
123 | "OS/Desktop"]
124 |
125 | if args.test is None:
126 | bc_repo.create_issue(title=macarm64Title,
127 | body=laptop_template,
128 | milestone=bc_milestone[milestonever],
129 | labels=macarm64List)
130 |
131 | print("--------------------------------------------------------\n")
132 |
133 | print("Mac Checklist (x64):")
134 | print(macOS_x64)
135 | print("")
136 | macx64Title = "Manual test run on macOS (x64) for " + milestonever
137 | macx64List = ["OS/macOS",
138 | "release-notes/exclude",
139 | "tests",
140 | "QA/Yes",
141 | "OS/Desktop"]
142 |
143 | if args.test is None:
144 | bc_repo.create_issue(title=macx64Title,
145 | body=macOS_x64,
146 | milestone=bc_milestone[milestonever],
147 | labels=macx64List)
148 |
149 | print("--------------------------------------------------------\n")
150 |
151 | print("Win64 Checklist:")
152 | print(laptop_template)
153 | print("")
154 | winTitle = "Manual test run on Windows x64 for " + milestonever
155 | winList = ["OS/Windows",
156 | "release-notes/exclude",
157 | "tests",
158 | "QA/Yes",
159 | "OS/Desktop"]
160 |
161 | if args.test is None:
162 | bc_repo.create_issue(title=winTitle,
163 | body=laptop_template,
164 | milestone=bc_milestone[milestonever],
165 | labels=winList)
166 |
167 | print("--------------------------------------------------------\n")
168 |
169 | print("Linux Checklist:")
170 | print(laptop_template)
171 | print("")
172 | linTitle = "Manual test run on Linux for " + milestonever
173 | linList = ["OS/Linux",
174 | "release-notes/exclude",
175 | "tests",
176 | "QA/Yes",
177 | "OS/Desktop"]
178 |
179 | if args.test is None:
180 | bc_repo.create_issue(title=linTitle,
181 | body=laptop_template,
182 | milestone=bc_milestone[milestonever],
183 | labels=linList)
184 |
185 | return 0
186 |
187 | def laptop_CRminor_testruns(milestonever):
188 |
189 | wiki_laptop_CRminor = open("WikiTemplate/Desktop/Minor_CR_Bump/wikitemplate-minorCRbumpDesktop.md", "r")
190 | laptop_CRminor_template = wiki_laptop_CRminor.read()
191 | wiki_macOS_intel = open("WikiTemplate/Desktop/Minor_CR_Bump/wikitemplate-minorCRbump-macOS-x64.md", "r")
192 | macOS_x64 = wiki_macOS_intel.read()
193 |
194 | for issue in bc_repo.get_issues(
195 | milestone=bc_milestone[milestonever], sort="created",
196 | direction="asc", state="closed"):
197 | if("pull" not in issue.html_url):
198 | original_issue_title = issue.title
199 | issue_title = original_issue_title
200 | if(original_issue_title[0].islower()):
201 | lower = original_issue_title[0]
202 | upper = original_issue_title[0].upper()
203 | issue_title = original_issue_title.replace(lower, upper, 1)
204 |
205 | labels = issue.get_labels()
206 | label_names = []
207 |
208 | for label in labels:
209 | label_names.append(label.name)
210 | if("release-notes/include" in label_names and
211 | "QA/No" not in label_names and
212 | "tests" not in label_names):
213 | output_line = " - " + issue_title + ".([#" +\
214 | str(issue.number) + "](" + issue.html_url + "))"
215 | release_notes.append(output_line)
216 |
217 | if("QA/Yes" in label_names and "QA/No" not in label_names and
218 | "tests" not in label_names):
219 | output_line = " - [ ] " + issue_title + ".([#" +\
220 | str(issue.number) + "](" + issue.html_url + "))"
221 | checklist.append(output_line)
222 | if("QA Pass-macOS-arm64" not in label_names and
223 | "OS/Windows" not in label_names and
224 | "OS/Linux" not in label_names and
225 | "QA/No" not in label_names and
226 | "tests" not in label_names):
227 | macarm64_checklist.append(output_line)
228 |
229 | if("QA Pass-Win64" not in label_names and
230 | "OS/macOS" not in label_names and
231 | "OS/Linux" not in label_names and
232 | "QA/No" not in label_names and
233 | "tests" not in label_names):
234 | win64_checklist.append(output_line)
235 |
236 | print("\nRelease Notes ")
237 | for line in release_notes:
238 | print(line)
239 | print("")
240 |
241 | print("\nMac Checklist (arm64):")
242 | print(laptop_CRminor_template)
243 | print("")
244 | macarm64Title = "Manual test run on macOS (arm64) for " + milestonever
245 | macarm64List = ["OS/macOS-arm64",
246 | "release-notes/exclude",
247 | "tests",
248 | "QA/Yes",
249 | "OS/Desktop"]
250 |
251 | if args.test is None:
252 | bc_repo.create_issue(title=macarm64Title,
253 | body=laptop_CRminor_template,
254 | milestone=bc_milestone[milestonever],
255 | labels=macarm64List)
256 |
257 | print("--------------------------------------------------------\n")
258 |
259 | print("Mac Checklist(x64):")
260 | print(macOS_x64)
261 | print("")
262 | macx64Title = "Manual test run on macOS (x64) for " + milestonever
263 | macx64List = ["OS/macOS",
264 | "release-notes/exclude",
265 | "tests",
266 | "QA/Yes",
267 | "OS/Desktop"]
268 |
269 | if args.test is None:
270 | bc_repo.create_issue(title=macx64Title,
271 | body=macOS_x64,
272 | milestone=bc_milestone[milestonever],
273 | labels=macx64List)
274 |
275 | print("--------------------------------------------------------\n")
276 |
277 | print("Win64 Checklist:")
278 | print(laptop_CRminor_template)
279 | print("")
280 | winTitle = "Manual test run on Windows x64 for " + milestonever
281 | winList = ["OS/Windows",
282 | "release-notes/exclude",
283 | "tests",
284 | "QA/Yes",
285 | "OS/Desktop"]
286 |
287 | if args.test is None:
288 | bc_repo.create_issue(title=winTitle,
289 | body=laptop_CRminor_template,
290 | milestone=bc_milestone[milestonever],
291 | labels=winList)
292 |
293 | print("--------------------------------------------------------\n")
294 |
295 | print("Linux Checklist:")
296 | print(laptop_CRminor_template)
297 | print("")
298 | linTitle = "Manual test run on Linux for " + milestonever
299 | linList = ["OS/Linux",
300 | "release-notes/exclude",
301 | "tests",
302 | "QA/Yes",
303 | "OS/Desktop"]
304 |
305 | if args.test is None:
306 | bc_repo.create_issue(title=linTitle,
307 | body=laptop_CRminor_template,
308 | milestone=bc_milestone[milestonever],
309 | labels=linList)
310 |
311 | return 0
312 |
313 | def crypto_desktop(milestonever):
314 |
315 | wiki_laptop_crypto = open("WikiTemplate/Crypto/wikitemplate-cryptoDesktop.md", "r")
316 | laptop_crypto_template = wiki_laptop_crypto.read()
317 |
318 | for issue in bc_repo.get_issues(
319 | milestone=bc_milestone[milestonever], sort="created",
320 | direction="asc", state="closed"):
321 | if("pull" not in issue.html_url):
322 | original_issue_title = issue.title
323 | issue_title = original_issue_title
324 | if(original_issue_title[0].islower()):
325 | lower = original_issue_title[0]
326 | upper = original_issue_title[0].upper()
327 | issue_title = original_issue_title.replace(lower, upper, 1)
328 |
329 | print(laptop_crypto_template)
330 | print("")
331 |
332 | DesktopCryptoTitle = "Desktop Crypto Wallet Regression test run for " + milestonever
333 | DesktopCryptoList = ["OS/Windows",
334 | "release-notes/exclude",
335 | "feature/web3/wallet",
336 | "tests",
337 | "QA/Yes",
338 | "OS/Desktop"]
339 |
340 | if args.test is None:
341 | bc_repo.create_issue(title=DesktopCryptoTitle,
342 | body=laptop_crypto_template,
343 | milestone=bc_milestone[milestonever],
344 | labels=DesktopCryptoList)
345 |
346 | return 0
347 |
348 | def android_testruns(milestonever):
349 |
350 | wiki_android_file = open("WikiTemplate/Android/wikitemplate-android.md", "r")
351 | android_template = wiki_android_file.read()
352 |
353 | for issue in bc_repo.get_issues(
354 | milestone=bc_milestone[milestonever],
355 | sort="created",
356 | direction="asc",
357 | state="closed"):
358 | if("pull" not in issue.html_url):
359 | original_issue_title = issue.title
360 | issue_title = original_issue_title
361 | if(original_issue_title[0].islower()):
362 | lower = original_issue_title[0]
363 | upper = original_issue_title[0].upper()
364 | issue_title = original_issue_title.replace(lower, upper, 1)
365 |
366 | labels = issue.get_labels()
367 | label_names = []
368 |
369 | for label in labels:
370 | label_names.append(label.name)
371 | if("QA/Yes" in label_names and
372 | "OS/Android" in label_names and
373 | "tests" not in label_names and
374 | "QA/No" not in label_names):
375 | output_line = " - " + issue_title + ".([#" +\
376 | str(issue.number) + "])" + issue.html_url + "))"
377 | release_notes.append(output_line)
378 |
379 | if("QA/Yes" in label_names and "QA/No" not in label_names):
380 | output_line = " - [ ] " + issue_title + ". ([#" +\
381 | str(issue.number) + "](" + issue.html_url + "))"
382 | checklist.append(output_line)
383 | checklist.append(issue.html_url)
384 | if("QA Pass - Android ARM" not in label_names and
385 | "checked by qa" not in label_names and
386 | "tests" not in label_names and
387 | "x86" not in label_names and
388 | "tablet-specific" not in label_names):
389 | android_arm_checklist.append(output_line)
390 |
391 |
392 | if("QA Pass - Android Tab" not in label_names and
393 | "checked by qa" not in label_names and
394 | "tests" not in label_names and
395 | "x86" not in label_names and
396 | "phone-specific" not in label_names):
397 | android_tab_checklist.append(output_line)
398 |
399 | print("\nRelease Notes:")
400 | for line in release_notes:
401 | print(line)
402 | print("")
403 |
404 | print("\nChecklist:")
405 | for line in checklist:
406 | print(line)
407 | print("")
408 |
409 | print("\nAndroid ARM Checklist:")
410 | print(android_template)
411 | print("")
412 | AndroidARMtitle = "Manual test run on Android ARM for " + milestonever
413 | AndroidARMlist = ["ARM",
414 | "release-notes/exclude",
415 | "tests",
416 | "QA/Yes",
417 | "OS/Android"]
418 |
419 | if args.test is None:
420 | bc_repo.create_issue(title=AndroidARMtitle,
421 | body=android_template,
422 | milestone=bc_milestone[milestonever],
423 | labels=AndroidARMlist)
424 |
425 | print("--------------------------------------------------------\n")
426 |
427 | print("Android Tab Checklist:")
428 | print(android_template)
429 | print("")
430 | AndroidTabtitle = "Manual test run on Android Tab for " + milestonever
431 | AndroidTablist = ["ARM",
432 | "release-notes/exclude",
433 | "tests",
434 | "QA/Yes",
435 | "OS/Android"]
436 |
437 | if args.test is None:
438 | bc_repo.create_issue(title=AndroidTabtitle,
439 | body=android_template,
440 | milestone=bc_milestone[milestonever],
441 | labels=AndroidTablist)
442 |
443 | print("--------------------------------------------------------\n")
444 |
445 | return 0
446 |
447 | def android_CRminor_testruns(milestonever):
448 |
449 | wiki_android_CRminor = open("WikiTemplate/Android/wikitemplate-minorCRbumpAndroid.md", "r")
450 | android_CRminor_template = wiki_android_CRminor.read()
451 |
452 | for issue in bc_repo.get_issues(
453 | milestone=bc_milestone[milestonever],
454 | sort="created",
455 | direction="asc",
456 | state="closed"):
457 | if("pull" not in issue.html_url):
458 | original_issue_title = issue.title
459 | issue_title = original_issue_title
460 | if(original_issue_title[0].islower()):
461 | lower = original_issue_title[0]
462 | upper = original_issue_title[0].upper()
463 | issue_title = original_issue_title.replace(lower, upper, 1)
464 |
465 | labels = issue.get_labels()
466 | label_names = []
467 |
468 | for label in labels:
469 | label_names.append(label.name)
470 | if("QA/Yes" in label_names and
471 | "OS/Android" in label_names and
472 | "tests" not in label_names and
473 | "QA/No" not in label_names):
474 | output_line = " - " + issue_title + ".([#" +\
475 | str(issue.number) + "])" + issue.html_url + "))"
476 | release_notes.append(output_line)
477 |
478 | if("QA/Yes" in label_names and "QA/No" not in label_names):
479 | output_line = " - [ ] " + issue_title + ". ([#" +\
480 | str(issue.number) + "](" + issue.html_url + "))"
481 | checklist.append(output_line)
482 | checklist.append(issue.html_url)
483 | if("QA Pass - Android ARM" not in label_names and
484 | "checked by qa" not in label_names and
485 | "tests" not in label_names and
486 | "x86" not in label_names and
487 | "tablet-specific" not in label_names):
488 | android_arm_checklist.append(output_line)
489 |
490 | if("QA Pass - Android Tab" not in label_names and
491 | "checked by qa" not in label_names and
492 | "tests" not in label_names and
493 | "x86" not in label_names and
494 | "phone-specific" not in label_names):
495 | android_tab_checklist.append(output_line)
496 |
497 | print("\nRelease Notes:")
498 | for line in release_notes:
499 | print(line)
500 | print("")
501 |
502 | print("\nChecklist:")
503 | for line in checklist:
504 | print(line)
505 | print("")
506 |
507 | print("\nAndroid ARM Checklist:")
508 | print(android_CRminor_template)
509 | print("")
510 | AndroidARMtitle = "Manual test run on Android ARM for " + milestonever
511 | AndroidARMlist = ["ARM",
512 | "release-notes/exclude",
513 | "tests",
514 | "QA/Yes",
515 | "OS/Android"]
516 |
517 | if args.test is None:
518 | bc_repo.create_issue(title=AndroidARMtitle,
519 | body=android_CRminor_template,
520 | milestone=bc_milestone[milestonever],
521 | labels=AndroidARMlist)
522 |
523 | print("--------------------------------------------------------\n")
524 |
525 | print("Android Tab Checklist:")
526 | print(android_CRminor_template)
527 | print("")
528 | AndroidTabtitle = "Manual test run on Android Tab for " + milestonever
529 | AndroidTablist = ["ARM",
530 | "release-notes/exclude",
531 | "tests",
532 | "QA/Yes",
533 | "OS/Android"]
534 |
535 | if args.test is None:
536 | bc_repo.create_issue(title=AndroidTabtitle,
537 | body=android_CRminor_template,
538 | milestone=bc_milestone[milestonever],
539 | labels=AndroidTablist)
540 |
541 |
542 | print("--------------------------------------------------------\n")
543 |
544 | return 0
545 |
546 | def crypto_android(milestonever):
547 |
548 |
549 | wiki_android_crypto = open("WikiTemplate/Crypto/wikitemplate-cryptoAndroid.md", "r")
550 | android_crypto_template = wiki_android_crypto.read()
551 |
552 | for issue in bc_repo.get_issues(
553 | milestone=bc_milestone[milestonever],
554 | sort="created",
555 | direction="asc",
556 | state="closed"):
557 | if("pull" not in issue.html_url):
558 | original_issue_title = issue.title
559 | issue_title = original_issue_title
560 | if(original_issue_title[0].islower()):
561 | lower = original_issue_title[0]
562 | upper = original_issue_title[0].upper()
563 | issue_title = original_issue_title.replace(lower, upper, 1)
564 |
565 | print("Crypto Wallet Android Checklist:")
566 | print(android_crypto_template)
567 | print("")
568 | AndroidCryptotitle = "Android Crypto Wallet Regression test run for " + milestonever
569 | AndroidCryptolist = ["ARM",
570 | "release-notes/exclude",
571 | "tests",
572 | "feature/web3/wallet",
573 | "QA/Yes",
574 | "OS/Android"]
575 |
576 | if args.test is None:
577 | bc_repo.create_issue(title=AndroidCryptotitle,
578 | body=android_crypto_template,
579 | milestone=bc_milestone[milestonever],
580 | labels=AndroidCryptolist)
581 |
582 | return 0
583 |
584 | def iOS_testruns():
585 |
586 | wikitemplate_ios = open("WikiTemplate/iOS/wikitemplate-ios.md", "r")
587 | ios_template = wikitemplate_ios.read()
588 | ios_key = sorted(ios_milestone.keys())[0]
589 |
590 |
591 | for issue in ios_repo.get_issues(milestone=ios_milestone[ios_key],
592 | sort="created",
593 | direction="asc",
594 | state="closed"):
595 |
596 | if("pull" not in issue.html_url):
597 | original_issue_title = issue.title
598 | issue_title = original_issue_title
599 | if(original_issue_title[0].islower()):
600 | lower = original_issue_title[0]
601 | upper = original_issue_title[0].upper()
602 | issue_title = original_issue_title.replace(lower, upper, 1)
603 |
604 | labels = issue.get_labels()
605 | label_names = []
606 | for label in labels:
607 | label_names.append(label.name)
608 | if("release-notes/include" in label_names and
609 | "QA/No" in label_names and
610 | "tests" not in label_names):
611 | output_line = " - " + issue_title + ". ([#" +\
612 | str(issue.number) + "](" + issue.html_url + "))"
613 | release_notes.append(output_line)
614 | release_notes.append(issue.html_url)
615 | #print(release_notes)
616 |
617 | if("QA/Yes" in label_names and "QA/No" not in label_names):
618 | output_line = " - [ ] " + issue_title + ". ([#" +\
619 | str(issue.number) + "](" + issue.html_url + "))"
620 | checklist.append(output_line)
621 | checklist.append(issue.html_url)
622 | if("QA Pass - iPad" not in label_names and
623 | "iPhone" not in label_names and
624 | "tests" not in label_names):
625 | iPad_checklist.append(output_line)
626 |
627 | if("QA Pass - iPhone" not in label_names and
628 | "iPad" not in label_names and
629 | "tests" not in label_names):
630 | iPhone_checklist.append(output_line)
631 |
632 | if("QA Pass - iPhone X" not in label_names and
633 | "iPad" not in label_names and
634 | "tests" not in label_names):
635 | iPhoneX_checklist.append(output_line)
636 |
637 | print("\nRelease Notes:")
638 | print(release_notes)
639 | for line in release_notes:
640 | line += line +"\n"
641 | print(line)
642 | print("")
643 |
644 | print("\niPad Checklist:")
645 | print(ios_template)
646 | print("")
647 | iPad_Title = "Manual test run for " + ios_key +\
648 | " on iPad"
649 | iPad_List = ["ipad",
650 | "release-notes/exclude",
651 | "tests",
652 | "QA/Yes"]
653 |
654 | if args.test is None:
655 | ios_repo.create_issue(title=iPad_Title,
656 | body=ios_template,
657 | milestone=ios_milestone[ios_key],
658 | labels=iPad_List)
659 |
660 | print("--------------------------------------------------------\n")
661 |
662 | print("iPhone Checklist:")
663 | print(ios_template)
664 | print("")
665 | iPhone_Title = "Manual test run for " + ios_key +\
666 | " on iPhone"
667 | iPhone_List = ["iPhone",
668 | "release-notes/exclude",
669 | "tests",
670 | "QA/Yes"]
671 |
672 | if args.test is None:
673 | ios_repo.create_issue(title=iPhone_Title,
674 | body=ios_template,
675 | milestone=ios_milestone[ios_key],
676 | labels=iPhone_List)
677 |
678 | print("--------------------------------------------------------\n")
679 |
680 | print("iPhone X Checklist:")
681 | print(ios_template)
682 | print("")
683 | iPhoneX_Title = "Manual test run for " + ios_key +\
684 | " on iPhone X"
685 | iPhoneX_List = ["iPhone",
686 | "release-notes/exclude",
687 | "tests",
688 | "QA/Yes"]
689 |
690 | if args.test is None:
691 | ios_repo.create_issue(title=iPhoneX_Title,
692 | body=ios_template,
693 | milestone=ios_milestone[ios_key],
694 | labels=iPhoneX_List)
695 |
696 | return
697 |
698 | def crypto_iOS():
699 |
700 | wiki_iOS_crypto = open("WikiTemplate/Crypto/wikitemplate-cryptoiOS.md", "r")
701 | iOS_crypto_template = wiki_iOS_crypto.read()
702 | ios_key = sorted(ios_milestone.keys())[0]
703 |
704 |
705 | for issue in ios_repo.get_issues(milestone=ios_milestone[ios_key],
706 | sort="created",
707 | direction="asc",
708 | state="closed"):
709 | if("pull" not in issue.html_url):
710 | original_issue_title = issue.title
711 | issue_title = original_issue_title
712 | if(original_issue_title[0].islower()):
713 | lower = original_issue_title[0]
714 | upper = original_issue_title[0].upper()
715 | issue_title = original_issue_title.replace(lower, upper, 1)
716 |
717 | print(iOS_crypto_template)
718 | print("")
719 | CyprotiOS_Title = "iOS Crypto Wallet Regression test run for " + ios_key +\
720 | " on iPhone"
721 | CryptoiOS_List = ["iphone",
722 | "release-notes/exclude",
723 | "tests",
724 | "Epic: Brave Wallet",
725 | "QA/Yes"]
726 |
727 | if args.test is None:
728 | ios_repo.create_issue(title=CyprotiOS_Title,
729 | body=iOS_crypto_template,
730 | milestone=ios_milestone[ios_key],
731 | labels=CryptoiOS_List)
732 |
733 | return 0
734 |
735 | def tor_testruns(tor_rel):
736 |
737 | macOS_intel_wiki = open("WikiTemplate/Tor/wikitemplate-tor-macOS(Intel).md", "r")
738 | macOS_intel_template = macOS_intel_wiki.read()
739 | macOS_arm64_wiki = open("WikiTemplate/Tor/wikitemplate-tor-macOS(arm64).md", "r")
740 | macOS_arm64_template = macOS_arm64_wiki.read()
741 | win_tor_wiki = open("WikiTemplate/Tor/wikitemplate-tor-Windows.md", "r")
742 | windows_template = win_tor_wiki.read()
743 | linux_tor_wiki = open("WikiTemplate/Tor/wikitemplate-tor-Linux.md", "r")
744 | linux_template = linux_tor_wiki.read()
745 |
746 | print("\nMac Checklist (Intel):")
747 | print(macOS_intel_template)
748 | print("")
749 | macTitle = "Manual test run on macOS (Intel) for " + tor_rel
750 | macList = ["OS/macOS",
751 | "release-notes/exclude",
752 | "tests",
753 | "QA/Yes",
754 | "OS/Desktop",
755 | "feature/tor"]
756 |
757 | if args.test is None:
758 | bc_repo.create_issue(title=macTitle,
759 | body=macOS_intel_template,
760 | milestone=bc_milestone[tor_rel],
761 | labels=macList)
762 |
763 | print("--------------------------------------------------------\n")
764 |
765 | print("Mac Checklist(arm64):")
766 | print(macOS_arm64_template)
767 | print("")
768 | macarm64Title = "Manual test run on macOS (arm64) for " + tor_rel
769 | macarm64List = ["OS/macOS-arm64",
770 | "release-notes/exclude",
771 | "tests",
772 | "QA/Yes",
773 | "OS/Desktop",
774 | "feature/tor"]
775 |
776 | if args.test is None:
777 | bc_repo.create_issue(title=macarm64Title,
778 | body=macOS_arm64_template,
779 | milestone=bc_milestone[tor_rel],
780 | labels=macarm64List)
781 |
782 | print("--------------------------------------------------------\n")
783 |
784 | print("Win64 Checklist:")
785 | print(windows_template)
786 | print("")
787 | winTitle = "Manual test run on Windows x64 & x86 for " + tor_rel
788 | winList = ["OS/Windows",
789 | "release-notes/exclude",
790 | "tests",
791 | "QA/Yes",
792 | "OS/Desktop",
793 | "feature/tor"]
794 |
795 | if args.test is None:
796 | bc_repo.create_issue(title=winTitle,
797 | body=windows_template,
798 | milestone=bc_milestone[tor_rel],
799 | labels=winList)
800 |
801 | print("--------------------------------------------------------\n")
802 |
803 | print("Linux Checklist:")
804 | print(linux_template)
805 | print("")
806 | linTitle = "Manual test run on Linux for " + tor_rel
807 | linList = ["OS/Linux",
808 | "release-notes/exclude",
809 | "tests",
810 | "QA/Yes",
811 | "OS/Desktop",
812 | "feature/tor"]
813 |
814 | if args.test is None:
815 | bc_repo.create_issue(title=linTitle,
816 | body=linux_template,
817 | milestone=bc_milestone[tor_rel],
818 | labels=linList)
819 |
820 | return 0
821 |
822 | def ipfs_testruns(ipfs_rel):
823 |
824 | ipfs_wiki = open("WikiTemplate/IPFS/wikitemplate-IPFS.md", "r")
825 | ipfs_template = ipfs_wiki.read()
826 |
827 | print("\nMac Checklist (Intel/arm64):")
828 | print(ipfs_template)
829 | print("")
830 | macTitle = "Manual test run on macOS (Intel/arm64) for " + ipfs_rel
831 | macList = ["OS/macOS",
832 | "release-notes/exclude",
833 | "tests",
834 | "QA/Yes",
835 | "OS/Desktop",
836 | "feature/web3/ipfs"]
837 |
838 | if args.test is None:
839 | bc_repo.create_issue(title=macTitle,
840 | body=ipfs_template,
841 | milestone=bc_milestone[ipfs_rel],
842 | labels=macList)
843 |
844 | print("--------------------------------------------------------\n")
845 |
846 | print("Win64 Checklist:")
847 | print(ipfs_template)
848 | print("")
849 | winTitle = "Manual test run on Windows x64 & x86 for " + ipfs_rel
850 | winList = ["OS/Windows",
851 | "release-notes/exclude",
852 | "tests",
853 | "QA/Yes",
854 | "OS/Desktop",
855 | "feature/web3/ipfs"]
856 |
857 | if args.test is None:
858 | bc_repo.create_issue(title=winTitle,
859 | body=ipfs_template,
860 | milestone=bc_milestone[ipfs_rel],
861 | labels=winList)
862 |
863 | print("--------------------------------------------------------\n")
864 |
865 | print("Linux Checklist:")
866 | print(ipfs_template)
867 | print("")
868 | linTitle = "Manual test run on Linux for " + ipfs_rel
869 | linList = ["OS/Linux",
870 | "release-notes/exclude",
871 | "tests",
872 | "QA/Yes",
873 | "OS/Desktop",
874 | "feature/web3/ipfs"]
875 |
876 | if args.test is None:
877 | bc_repo.create_issue(title=linTitle,
878 | body=ipfs_template,
879 | milestone=bc_milestone[ipfs_rel],
880 | labels=linList)
881 |
882 | return 0
883 |
884 |
885 | print("\n#######################################################################"
886 | "###################################################")
887 | print("\n For Desktop or Android minor CR bump only use the basic checks selection to "
888 | "generate testruns\n")
889 |
890 | length = 0
891 | print("Current open milestones for Desktop/Android")
892 | while length < len(laptop_key):
893 | print(str(length+1) + ". " + sorted(bc_milestone.keys())[length])
894 | length += 1
895 |
896 | ioslength=0
897 | print("\nCurrent open milestones for iOS")
898 | while ioslength < len(ios_key):
899 | print(str(ioslength+1) + ". " + sorted(ios_milestone.keys())[ioslength])
900 | ioslength += 1
901 |
902 | print("\nNOTE:")
903 | print("\n For Tor Release make sure you type \"Tor\" or \"tor\" instead "
904 | "of the number")
905 | print("\n For IPFS Release make sure you type \"IPFS/KUBO \" or \"ipfs/kubo\" instead "
906 | "of the number")
907 |
908 | print("#######################################################################"
909 | "###################################################")
910 |
911 | header = print("\nCreate test runs for:\n")
912 | laptop = print("1. Desktop Release (Full manual pass)")
913 | #laptop_hf = print("2. Desktop Release (Reduced manual pass for Hotfix)")
914 | laptop_CRminor = print("2. Desktop Release (Basic checks for"
915 | " hotfix/minor Chromium bump)")
916 | android = print("3. Android Release (Full manual pass)")
917 | #android_hf = print("5. Android Release (Reduced manual pass for Hotfix)")
918 | android_hf = print("4. Android Release (Basic checks for"
919 | " hotfix/minor Chromium bump)")
920 | ios = print("5. iOS Release")
921 | cyrpto_desktop = print("6. Crypto Wallet - Desktop")
922 | cyrpto_android = print("7. Crypto Wallet - Android")
923 | cyrpto_ios = print("8. Crypto Wallet - iOS")
924 | tor = print("9. Tor Release")
925 | ipfs = print("10. IPFS Release")
926 |
927 | select_checklist = input("\nChoose the platform for which you want to" +
928 | " generate the test run: ")
929 |
930 | if(select_checklist == "1"):
931 | print("\nGenerating test runs for " +
932 | str(sorted(bc_milestone.keys())[0]))
933 | laptop_testruns(sorted(bc_milestone.keys())[0])
934 | elif(select_checklist == "2"):
935 | print("\nGenerating test runs for " +
936 | str(sorted(bc_milestone.keys())[0]))
937 | laptop_CRminor_testruns(sorted(bc_milestone.keys())[0])
938 | elif(select_checklist == "3"):
939 | print("\nGenerating test runs for " +
940 | str(sorted(bc_milestone.keys())[0]))
941 | android_testruns(sorted(bc_milestone.keys())[0])
942 | elif(select_checklist == "4"):
943 | print("\nGenerating test runs for " +
944 | str(sorted(bc_milestone.keys())[0]))
945 | android_CRminor_testruns(sorted(bc_milestone.keys())[0])
946 | elif(select_checklist == "5"):
947 | generate_ios_test = print("\nGenerating test runs for iOS ",
948 | sorted(ios_milestone.keys())[0])
949 | iOS_testruns()
950 | elif(select_checklist == "6"):
951 | generate_ios_test = print("\nGenerating Desktop Crypto Wallet Test run for",
952 | sorted(bc_milestone.keys())[0])
953 | crypto_desktop(sorted(bc_milestone.keys())[0])
954 | elif(select_checklist == "7"):
955 | generate_ios_test = print("\nGenerating Android Crypto Wallet Test run for",
956 | sorted(bc_milestone.keys())[0])
957 | crypto_android(sorted(bc_milestone.keys())[0])
958 | elif(select_checklist == "8"):
959 | generate_ios_test = print("\nGenerating iOS Crypto Wallet Test run for",
960 | sorted(ios_milestone.keys())[0])
961 | crypto_iOS()
962 | elif(select_checklist == "Tor" or select_checklist == "tor"):
963 | tormilestone = [s for s in bc_milestone if "Tor" in s]
964 | if (len(tormilestone) == 0):
965 | torkey = ""
966 | print("No Tor milestone exists. Please create milestone "
967 | "and then generate test runs")
968 | else:
969 | torkey = tormilestone[0]
970 | generate_ios_test = print("\nGenerating test runs for Tor",
971 | (tormilestone)[0])
972 | tor_testruns(torkey)
973 | elif(select_checklist == "IPFS" or select_checklist == "ipfs"
974 | or select_checklist == "KUBO" or select_checklist == "kubo"):
975 | ipfsmilestone = [i for i in bc_milestone if "IPFS" in i]
976 | if (len(ipfsmilestone) == 0):
977 | ipfskey = ""
978 | print("No IPFS milestone exists. Please create milestone "
979 | "and then generate test runs")
980 | else:
981 | ipfskey = ipfsmilestone[0]
982 | generate_ipfs_test = print("\nGenerating test runs for",
983 | (ipfsmilestone)[0])
984 | ipfs_testruns(ipfskey)
985 | else:
986 | print("Incorrect selection. " + select_checklist + " is not a valid input\n")
987 | exit()
988 |
989 |
--------------------------------------------------------------------------------
/braveautogen-pre-release-only.py:
--------------------------------------------------------------------------------
1 | from github import Github
2 | import argparse
3 |
4 | parser = argparse.ArgumentParser()
5 | parser.add_argument("-t", "--test", help="Test Mode, do not create Github issues")
6 |
7 | args = parser.parse_args()
8 |
9 | secret_file = open('github.secret', 'r')
10 | token_string = secret_file.readline().rstrip("\n\r")
11 |
12 | g = Github(token_string, timeout=1000)
13 | rate = g.get_rate_limit()
14 | limit = rate.rate.limit
15 | remaining = rate.rate.remaining
16 |
17 | print("Rate Limit: " + str(limit))
18 | print("Rate Remaining: " + str(remaining))
19 |
20 | repo = g.get_organization("brave").get_repo("browser-laptop")
21 |
22 | milestone_dictionary = {}
23 | for milestone in repo.get_milestones(state="open"):
24 | milestone_dictionary.update({milestone.title:milestone})
25 |
26 | key = sorted(milestone_dictionary.keys())[0]
27 | print(key)
28 |
29 | checklist = []
30 | release_notes = []
31 | exclusion_list = []
32 | mac_checklist = []
33 | win32_checklist = []
34 | win64_checklist = []
35 | linux_checklist = []
36 |
37 | for issue in repo.get_issues(milestone=milestone_dictionary[key], state="closed"):
38 | if('pull' not in issue.html_url):
39 | original_issue_title = issue.title
40 | issue_title = original_issue_title
41 | if(original_issue_title[0].islower()):
42 | lower = original_issue_title[0]
43 | upper = original_issue_title[0].upper()
44 | issue_title = original_issue_title.replace(lower, upper, 1)
45 |
46 | labels = issue.get_labels()
47 | label_names = []
48 | for label in labels:
49 | label_names.append(label.name)
50 | if('release-notes/include' in label_names):
51 | output_line = ' - ' + issue_title + '. ([#' + str(issue.number) + '](' + issue.html_url + '))'
52 | release_notes.append(output_line)
53 |
54 | if('QA/test-plan-specified' in label_names and 'QA/no-qa-needed' not in label_names):
55 | output_line = ' - [ ] ' + issue_title + '. ([#' + str(issue.number) + '](' + issue.html_url + '))'
56 | checklist.append(output_line)
57 | checklist.append(issue.html_url)
58 | if('QA/checked-macOS' not in label_names and 'QA/checked' not in label_names and 'OS/Windows' not in label_names and 'OS/unix-like/linux' not in label_names):
59 | mac_checklist.append(output_line)
60 |
61 | if('QA/checked-Win64' not in label_names and 'OS/macOS' not in label_names and 'OS/unix-like/linux' not in label_names):
62 | win64_checklist.append(output_line)
63 |
64 | if('QA/checked-Linux' not in label_names and 'OS/Windows' not in label_names and 'OS/macOS' not in label_names):
65 | linux_checklist.append(output_line)
66 |
67 | else:
68 | output_line = ' - [ ] ' + issue_title + '. ([#' + str(issue.number) + '](' + issue.html_url + '))'
69 | exclusion_list.append(output_line)
70 | exclusion_list.append(issue.html_url)
71 |
72 | print("Release Notes:")
73 | for line in release_notes:
74 | print(line)
75 | print("")
76 |
77 | print("Checklist:")
78 | for line in checklist:
79 | print(line)
80 | print("")
81 |
82 | print("Exclusion List:")
83 | for line in exclusion_list:
84 | print(line)
85 | print("")
86 |
87 | print("Mac Checklist:")
88 | bigline = "## Per release specialty tests\n"
89 | for line in mac_checklist:
90 | bigline += line + "\n"
91 | print(bigline)
92 | print("")
93 | mactitle = "Per-release specialty test run on OS X for " + key
94 | maclist = ['OS/macOS', 'release-notes/exclude', 'tests']
95 |
96 | if args.test is None:
97 | repo.create_issue(title=mactitle,body=bigline,assignee="LaurenWags",milestone=milestone_dictionary[key] ,labels=maclist)
98 |
99 | print("Win64 Checklist:")
100 | bigline = "## Per release specialty tests\n"
101 | for line in win64_checklist:
102 | bigline += line + "\n"
103 | print(bigline)
104 | print("")
105 | wintitle = "Per-release specialty test run on Windows x64 for " + key
106 | winlist = ['OS/Windows', 'release-notes/exclude', 'tests']
107 |
108 | if args.test is None:
109 | repo.create_issue(title=wintitle,body=bigline,assignee="srirambv",milestone=milestone_dictionary[key] ,labels=winlist)
110 |
111 | print("Linux Checklist:")
112 | bigline = "## Per release specialty tests\n"
113 | for line in linux_checklist:
114 | bigline += line + "\n"
115 | print(bigline)
116 | print("")
117 | lintitle = "Per-release specialty test run on Linux for " + key
118 | linlist = ['OS/unix-like/linux', 'release-notes/exclude', 'tests']
119 |
120 | if args.test is None:
121 | repo.create_issue(title=lintitle,body=bigline,assignee="kjozwiak",milestone=milestone_dictionary[key] ,labels=linlist)
122 |
--------------------------------------------------------------------------------
/changelog.py:
--------------------------------------------------------------------------------
1 | from github import Github
2 | import argparse
3 |
4 | parser = argparse.ArgumentParser()
5 | parser.add_argument("-t", "--test",
6 | help="Test Mode, do not create Github issues")
7 |
8 | args = parser.parse_args()
9 |
10 | secret_file = open("github.secret", "r")
11 | token_string = secret_file.readline().rstrip("\n\r")
12 |
13 | g = Github(token_string, timeout=1000)
14 | rate = g.get_rate_limit()
15 | limit = rate.rate.limit
16 | remaining = rate.rate.remaining
17 |
18 | print("Connecting to GitHub")
19 | print("Fetching Data")
20 |
21 | laptop_repo = g.get_organization("brave").get_repo("brave-browser")
22 | ios_repo = g.get_organization("brave").get_repo("brave-ios")
23 | android_repo = g.get_organization("brave").get_repo("browser-android-tabs")
24 |
25 | changelog = []
26 | crash_list = []
27 | general_list = []
28 | privacy_list = []
29 | regression_list = []
30 | rewards_list = []
31 | shields_list = []
32 | sync_list = []
33 | webcompat_list = []
34 | iPad_list = []
35 | iPhone_list = []
36 | android_list = []
37 |
38 | laptop_milestone = {}
39 | for laptopmilestone in laptop_repo.get_milestones(state="open"):
40 | laptop_milestone.update({laptopmilestone.title: laptopmilestone})
41 |
42 | ios_milestone = {}
43 | for iosmilestone in ios_repo.get_milestones(state="open"):
44 | ios_milestone.update({iosmilestone.title: iosmilestone})
45 |
46 | android_milestone = {}
47 | for androidmilestone in android_repo.get_milestones(state="open"):
48 | android_milestone.update({androidmilestone.title: androidmilestone})
49 |
50 | laptop_key = sorted(laptop_milestone.keys())
51 | key1 = sorted(laptop_milestone.keys())[0]
52 | key2 = sorted(laptop_milestone.keys())[1]
53 | key3 = sorted(laptop_milestone.keys())[2]
54 | key4 = sorted(laptop_milestone.keys())[3]
55 | key5 = sorted(laptop_milestone.keys())[4]
56 |
57 |
58 | def laptop_changelog(mlsver):
59 |
60 | for issue in laptop_repo.get_issues(milestone=laptop_milestone[mlsver],
61 | sort="created", direction="asc",
62 | state="closed"):
63 | if "pull" not in issue.html_url:
64 | original_issue_title = issue.title
65 | issue_title = original_issue_title
66 | if original_issue_title[0].islower():
67 | lower = original_issue_title[0]
68 | upper = original_issue_title[0].upper()
69 | issue_title = original_issue_title.replace(lower, upper, 1)
70 |
71 | labels = issue.get_labels()
72 | label_names = []
73 |
74 | for label in labels:
75 | label_names.append(label.name)
76 | if "crash" in label_names and "crash/webview" in label_names:
77 | crash_line = " - " +\
78 | issue_title + ".(#" + str(issue.number) + ")"
79 | crash_list.append(crash_line)
80 | if "crash" not in label_names\
81 | and "crash/webview" not in label_names\
82 | and "webcompat" not in label_names\
83 | and "audio" not in label_names\
84 | and "feature/video" not in label_names\
85 | and "regression" not in label_names\
86 | and "privacy/connect" not in label_names\
87 | and "privacy" not in label_names\
88 | and "privacy/feature" not in label_names\
89 | and "feature/sync" not in label_names\
90 | and "feature/tor/guest-semantics" not in label_names\
91 | and "feature/tor" not in label_names\
92 | and "feature/shields" not in label_names\
93 | and "feature/tor/leakproofing" not in label_names\
94 | and "feature/shields/panel" not in label_names\
95 | and "feature/private-browsing" not in label_names\
96 | and "feature/rewards" not in label_names\
97 | and "privacy/tracking" not in label_names\
98 | and "feature/shields/!scripts" not in label_names\
99 | and "feature/shields/adblock" not in label_names\
100 | and "feature/shields/webcompat" not in label_names\
101 | and "feature/shields/fingerprint" not in label_names:
102 | general_line = " - " +\
103 | issue_title + ".(#" + str(issue.number) + ")"
104 | general_list.append(general_line)
105 | if "feature/tor/guest-semantics" in label_names\
106 | or "feature/tor/leakproofing" in label_names\
107 | or "feature/tor" in label_names\
108 | or "feature/private-browsing" in label_names\
109 | or "privacy/connect" in label_names\
110 | or "privacy" in label_names\
111 | or "privacy/feature" in label_names\
112 | or "privacy/tracking" in label_names:
113 | privacy_line = " - " +\
114 | issue_title + ".(#" + str(issue.number) + ")"
115 | privacy_list.append(privacy_line)
116 | if "feature/rewards" in label_names:
117 | rewards_line = " - " +\
118 | issue_title + ".(#" + str(issue.number) + ")"
119 | rewards_list.append(rewards_line)
120 | if "feature/shields" in label_names\
121 | or "feature/shields/!scripts" in label_names\
122 | or "feature/shields/adblock" in label_names\
123 | or "feature/shields/webcompat" in label_names\
124 | or "feature/shields/fingerprint" in label_names\
125 | or "feature/shields/panel" in label_names:
126 | shields_line = " - " +\
127 | issue_title + ".(#" + str(issue.number) + ")"
128 | shields_list.append(shields_line)
129 | if "feature/sync" in label_names:
130 | sync_line = " - " +\
131 | issue_title + ".(#" + str(issue.number) + ")"
132 | sync_list.append(sync_line)
133 | if "regression" in label_names:
134 | regression_line = " - " +\
135 | issue_title + ".(#" + str(issue.number) + ")"
136 | regression_list.append(regression_line)
137 | if "webcompat" in label_names\
138 | or "audio" in label_names\
139 | or "feature/video" in label_names:
140 | webcompat_line = " - " +\
141 | issue_title + ".(#" + str(issue.number) + ")"
142 | webcompat_list.append(webcompat_line)
143 |
144 | if rewards_list:
145 | print("## Brave Rewards")
146 | for line in sorted(rewards_list):
147 | print(line)
148 | print("")
149 |
150 | if crash_list:
151 | print("## Crash Fixes")
152 | for line in sorted(crash_list):
153 | print(line)
154 | print("")
155 |
156 | if privacy_list:
157 | print("## Private Windows/Tor Windows")
158 | for line in sorted(privacy_list):
159 | print(line)
160 | print("")
161 |
162 | if shields_list:
163 | print("## Shields ")
164 | for line in sorted(shields_list):
165 | print(line)
166 | print("")
167 |
168 | if sync_list:
169 | print("## Sync")
170 | for line in sorted(sync_list):
171 | print(line)
172 | print("")
173 |
174 | if regression_list:
175 | print("## Regression fixes")
176 | for line in sorted(regression_list):
177 | print(line)
178 | print("")
179 |
180 | if webcompat_list:
181 | print("## Webcompat fixes")
182 | for line in sorted(webcompat_list):
183 | print(line)
184 | print("")
185 |
186 | if general_list:
187 | print("## Other fixes")
188 | for line in sorted(general_list):
189 | print(line)
190 | print("")
191 |
192 | return
193 |
194 |
195 | def ios_changelog():
196 |
197 | ios_key = sorted(ios_milestone.keys())[0]
198 | for issue in ios_repo.get_issues(milestone=ios_milestone[ios_key],
199 | sort="created", direction="asc",
200 | state="closed"):
201 | if 'pull' not in issue.html_url:
202 | original_issue_title = issue.title
203 | issue_title = original_issue_title
204 | if original_issue_title[0].islower():
205 | lower = original_issue_title[0]
206 | upper = original_issue_title[0].upper()
207 | issue_title = original_issue_title.replace(lower, upper, 1)
208 |
209 | labels = issue.get_labels()
210 | label_names = []
211 |
212 | for label in labels:
213 | label_names.append(label.name)
214 | if "crash" in label_names and "tests" not in label_names:
215 | crash_line = " - " +\
216 | issue_title + ".(#" + str(issue.number) + ")"
217 | crash_list.append(crash_line)
218 | if "crash" not in label_names and "webcompat" not in label_names\
219 | and "regression" not in label_names\
220 | and "feature/private-tabs" not in label_names\
221 | and "feature/sync" not in label_names\
222 | and "feature/rewards" not in label_names\
223 | and "feature/shields" not in label_names\
224 | and "tests" not in label_names:
225 | general_line = " - " +\
226 | issue_title + ".(#" + str(issue.number) + ")"
227 | general_list.append(general_line)
228 | if "regression" in label_names and "tests" not in label_names:
229 | regression_line = " - " +\
230 | issue_title + ".(#" + str(issue.number) + ")"
231 | regression_list.append(regression_line)
232 | if "feature/shields" in label_names and "tests" not in label_names:
233 | shields_line = " - " +\
234 | issue_title + ".(#" + str(issue.number) + ")"
235 | shields_list.append(shields_line)
236 | if "iPad" in label_names or "iPad Specific" in label_names:
237 | iPad_line = " - " +\
238 | issue_title + ".(#" + str(issue.number) + ")"
239 | iPad_list.append(iPad_line)
240 | if "iPhone" in label_names\
241 | or "iPhone X Specific" in label_names\
242 | or "iPhone Specific" in label_names\
243 | and "tests" not in label_names:
244 | iPhone_line = " - " +\
245 | issue_title + ".(#" + str(issue.number) + ")"
246 | iPhone_list.append(iPhone_line)
247 | if "webcompat" in label_names\
248 | or "audio" in label_names\
249 | or "feature/video" in label_names\
250 | and "tests" not in label_names:
251 | webcompat_line = " - " +\
252 | issue_title + ".(#" + str(issue.number) + ")"
253 | webcompat_list.append(webcompat_line)
254 | if "feature/sync" in label_names:
255 | sync_line = " - " +\
256 | issue_title + ".(#" + str(issue.number) + ")"
257 | sync_list.append(sync_line)
258 |
259 | if iPad_list:
260 | print("## iPad Specific Fixes")
261 | for line in sorted(iPad_list):
262 | print(line)
263 | print("")
264 |
265 | if iPhone_list:
266 | print("## iPhone Specific Fixes")
267 | for line in sorted(iPhone_list):
268 | print(line)
269 | print("")
270 |
271 | if crash_list:
272 | print("## Crash Fixes")
273 | for line in sorted(crash_list):
274 | print(line)
275 | print("")
276 |
277 | if shields_list:
278 | print("## Shields Fixes")
279 | for line in sorted(shields_list):
280 | print(line)
281 | print("")
282 |
283 | if sync_list:
284 | print("## Sync")
285 | for line in sorted(sync_list):
286 | print(line)
287 | print("")
288 |
289 | if regression_list:
290 | print("## Regression fixes")
291 | for line in sorted(regression_list):
292 | print(line)
293 | print("")
294 |
295 | if webcompat_list:
296 | print("## Webcompat fixes")
297 | for line in sorted(webcompat_list):
298 | print(line)
299 | print("")
300 |
301 | if general_list:
302 | print("## Other Fixes")
303 | for line in sorted(general_list):
304 | print(line)
305 | print("")
306 |
307 | return
308 |
309 |
310 | def android_changelog():
311 |
312 | andrky = sorted(android_milestone.keys())[0]
313 | for issue in android_repo.get_issues(
314 | milestone=android_milestone[andrky],
315 | sort="created", direction="asc",
316 | state="closed"):
317 | if('pull' not in issue.html_url):
318 | original_issue_title = issue.title
319 | issue_title = original_issue_title
320 | if(original_issue_title[0].islower()):
321 | lower = original_issue_title[0]
322 | upper = original_issue_title[0].upper()
323 | issue_title = original_issue_title.replace(lower, upper, 1)
324 |
325 | labels = issue.get_labels()
326 | label_names = []
327 | for label in labels:
328 | label_names.append(label.name)
329 | if "crash" in label_names and "tests" not in label_names:
330 | crash_line = " - " +\
331 | issue_title + ".(#" + str(issue.number) + ")"
332 | crash_list.append(crash_line)
333 | if "crash" not in label_names and "webcompat" not in label_names\
334 | and "regression" not in label_names\
335 | and "feature/private-tabs" not in label_names\
336 | and "feature/sync" not in label_names\
337 | and "feature/rewards" not in label_names\
338 | and "feature/shields" not in label_names\
339 | and "tests" not in label_names:
340 | general_line = " - " + issue_title +\
341 | ".(#" + str(issue.number) + ")"
342 | general_list.append(general_line)
343 | if "regression" in label_names and "tests" not in label_names:
344 | regression_line = " - " +\
345 | issue_title + ".(#" + str(issue.number) + ")"
346 | regression_list.append(regression_line)
347 | if "feature/shields" in label_names and "tests" not in label_names:
348 | shields_line = " - " +\
349 | issue_title + ".(#" + str(issue.number) + ")"
350 | shields_list.append(shields_line)
351 |
352 | if crash_list:
353 | print("## Crash Fixes")
354 | for line in sorted(crash_list):
355 | print(line)
356 | print("")
357 |
358 | if shields_list:
359 | print("## Shields Fixes")
360 | for line in sorted(shields_list):
361 | print(line)
362 |
363 | if sync_list:
364 | print("## Sync")
365 | for line in sorted(sync_list):
366 | print(line)
367 | print("")
368 | print("")
369 |
370 | if regression_list:
371 | print("## Regression fixes")
372 | for line in sorted(regression_list):
373 | print(line)
374 | print("")
375 |
376 | return
377 |
378 |
379 | print("**********************************************************************"
380 | "*******************")
381 | print(" Changelog Generator "
382 | " ")
383 | print("**********************************************************************"
384 | "*******************")
385 |
386 | header = print("Generate changelog for:\n")
387 | laptop = print("1. Laptop Release")
388 | ios = print("2. iOS")
389 | android = print("3. Android\n")
390 |
391 | select_checklist = input("Choose the platform for which you want to generate "
392 | "the changelog: ")
393 |
394 | if select_checklist == "1":
395 | print("\nSelect the milestone to generate changelog \n")
396 |
397 | length = 0
398 | while length < len(laptop_key):
399 | print(str(length+1) + ". " + sorted(laptop_milestone.keys())[length])
400 | length += 1
401 |
402 | generate_test = input("\nGenerate changelog for: ")
403 |
404 | if select_checklist == "1" and generate_test == "1":
405 | print("\nGenerating changelog for "
406 | + str(sorted(laptop_milestone.keys())[0]))
407 | laptop_changelog(key1)
408 | elif select_checklist == "1" and generate_test == "2":
409 | print("\nGenerating changelog for "
410 | + str(sorted(laptop_milestone.keys())[1]))
411 | laptop_changelog(key2)
412 | elif select_checklist == "1" and generate_test == "3":
413 | print("\nGenerating changelog for "
414 | + str(sorted(laptop_milestone.keys())[2]))
415 | laptop_changelog(key3)
416 | elif select_checklist == "1" and generate_test == "4":
417 | print("\nGenerating changelog for "
418 | + str(sorted(laptop_milestone.keys())[3]))
419 | laptop_changelog(key4)
420 | elif select_checklist == "1" and generate_test == "5":
421 | print("\nGenerating changelog for "
422 | + str(sorted(laptop_milestone.keys())[4]))
423 | laptop_changelog(key5)
424 | else:
425 | print("Nothing to create in this milestone. Run the script again.")
426 | exit()
427 |
428 | elif select_checklist == "2":
429 | generate_ios_test = print("Generating changelog for iOS Release",
430 | sorted(ios_milestone.keys())[0])
431 | ios_changelog()
432 | elif select_checklist == "3":
433 | generate_android_test = print("Generating changelog for Android Release",
434 | sorted(android_milestone.keys())[0])
435 | android_changelog()
436 | else:
437 | print("Incorrect selection. Exiting test creation...")
438 | exit()
439 |
--------------------------------------------------------------------------------
/testlinks.json:
--------------------------------------------------------------------------------
1 | {
2 | "links": [
3 | "https://jsfiddle.net/LnwtLckc/5/",
4 | "https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation",
5 | "https://www.twitch.tv/adobe",
6 | "http://zyan.scripts.mit.edu/public",
7 | "https://slashdot.org/",
8 | "https://badssl.com/",
9 | "http://downloadme.org/",
10 | "https://brianbondy.com/",
11 | "https://jsfiddle.net/bkf50r8v/13/",
12 | "https://jsfiddle.net/7ke9r14a/9/",
13 | "https://audiofingerprint.openwpm.com/",
14 | "https://brianbondy.com/",
15 | "http://www.bennish.net/web-notifications.html",
16 | "https://trac.torproject.org/projects/tor/login",
17 | "http://www.orimi.com/pdf-test.pdf",
18 | "https://mixed-script.badssl.com/",
19 | "http://www.homestarrunner.com",
20 | "http://www.roboform.com/filling-test-all-fields",
21 | "http://samy.pl/evercookie/",
22 | "http://www.reddit.com/",
23 | "http://wordcounter.net",
24 | "https://extensions.inrialpes.fr/brave/"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------