Skip to content

Commit 52f3e1c

Browse files
Merge branch 'main' into philimon/sync_fxa_test
2 parents f22be7f + eb4354c commit 52f3e1c

40 files changed

+593
-57
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: L10N output mapping splits
3+
4+
run-name: ${{ github.actor }} is writing L10N mapping splits
5+
on:
6+
schedule:
7+
- cron: "0 0 * * 1"
8+
9+
permissions:
10+
contents: "write"
11+
12+
jobs:
13+
Select-Channels:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
channels: ${{ steps.splits.outputs.channels }}
17+
steps:
18+
- name: Create app token
19+
uses: actions/create-github-app-token@v1
20+
id: app-token
21+
with:
22+
app-id: ${{ secrets.BOT_CLIENT_ID }}
23+
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
24+
- name: Checkout repository
25+
uses: actions/checkout@v4
26+
with:
27+
token: ${{ steps.app-token.outputs.token }}
28+
- name: Select test channels
29+
id: splits
30+
run: |
31+
python3 choose_l10n_beta_split.py

choose_l10n_beta_split.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import json
2+
import logging
3+
import sys
4+
from collections import defaultdict
5+
6+
from choose_l10n_ci_set import valid_l10n_mappings
7+
8+
9+
def distribute_mappings_evenly(mappings):
10+
"""
11+
Distribute the selected mappings into 3 splits and return the container.
12+
13+
Args:
14+
mappings (dict): A dictionary of mappings, where the keys are sites and the values are sets of regions.
15+
"""
16+
if not mappings:
17+
return {}
18+
# sort the mappings by the length of the regions per site
19+
mappings = dict(sorted(mappings.items(), key=lambda val: len(val[1]), reverse=True))
20+
# place the mappings into 3 containers evenly according to the load
21+
loads = [0, 0, 0]
22+
balanced_splits = [defaultdict(list) for _ in range(3)]
23+
for site, regions in mappings.items():
24+
min_idx = loads.index(min(loads))
25+
balanced_splits[min_idx][site] = list(regions)
26+
loads[min_idx] += len(regions)
27+
return balanced_splits
28+
29+
30+
if __name__ == "__main__":
31+
l10n_mappings = valid_l10n_mappings()
32+
all_splits = distribute_mappings_evenly(l10n_mappings)
33+
if not all_splits:
34+
logging.warning("No valid l10n mappings")
35+
sys.exit(1)
36+
for idx, split in enumerate(all_splits, start=1):
37+
with open(f"l10n_CM/beta_run_splits/l10n_split_{idx}.json", "w") as f:
38+
json.dump(split, f)

choose_l10n_ci_set.py

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,35 +34,6 @@ def valid_l10n_mappings():
3434
return mapping
3535

3636

37-
def distribute_mappings_evenly(mappings, version):
38-
"""
39-
Distribute the selected mappings if its a reportable run.
40-
41-
Args:
42-
mappings (dict): A dictionary of mappings, where the keys are sites and the values are sets of regions.
43-
version (int): The beta_version of the beta.
44-
"""
45-
if not mappings:
46-
return {}
47-
if os.environ.get("TESTRAIL_REPORT"):
48-
# sort the mappings by the length of the regions per site
49-
mappings = dict(
50-
sorted(mappings.items(), key=lambda val: len(val[1]), reverse=True)
51-
)
52-
# place the mappings into 3 containers evenly according to the load
53-
loads = [0, 0, 0]
54-
containers = [defaultdict(set) for _ in range(3)]
55-
for key, value in mappings.items():
56-
min_idx = loads.index(min(loads))
57-
containers[min_idx][key] = value
58-
loads[min_idx] += len(value)
59-
# get container index according to beta beta_version
60-
run_idx = version % 3
61-
return containers[run_idx]
62-
else:
63-
return mappings
64-
65-
6637
def process_changed_file(f, selected_mappings):
6738
"""
6839
process the changed file to add the site/region mappings.
@@ -108,6 +79,21 @@ def save_mappings(selected_container):
10879
f.writelines(current_running_mappings)
10980

11081

82+
def select_l10n_mappings(beta_version):
83+
"""
84+
Select the correct l10n mappings.
85+
86+
Args:
87+
beta_version: the current beta version.
88+
"""
89+
beta_split = (beta_version % 3) + 1
90+
if os.path.exists(f"l10n_CM/beta_run_splits/l10n_split_{beta_split}.json"):
91+
with open(f"l10n_CM/beta_run_splits/l10n_split_{beta_split}.json", "r") as f:
92+
return json.load(f)
93+
else:
94+
return valid_l10n_mappings()
95+
96+
11197
if __name__ == "__main__":
11298
if os.path.exists(".env"):
11399
with open(".env") as fh:
@@ -134,11 +120,12 @@ def save_mappings(selected_container):
134120
except ValueError:
135121
# failsafe beta_version
136122
beta_version = 0
137-
l10n_mappings = valid_l10n_mappings()
123+
# choose split number
124+
l10n_mappings = select_l10n_mappings(beta_version)
138125
sample_mappings = {k: v for k, v in l10n_mappings.items() if k.startswith("demo")}
139126
if os.environ.get("TESTRAIL_REPORT") or os.environ.get("MANUAL"):
140127
# Run all tests if this is a scheduled beta or a manual run
141-
save_mappings(distribute_mappings_evenly(l10n_mappings, beta_version))
128+
save_mappings(l10n_mappings)
142129
sys.exit(0)
143130

144131
re_set_all = [
@@ -199,5 +186,5 @@ def save_mappings(selected_container):
199186
selected_mappings |= sample_mappings
200187
break
201188

202-
save_mappings(distribute_mappings_evenly(selected_mappings, beta_version))
189+
save_mappings(selected_mappings)
203190
sys.exit(0)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"demo": [
3+
"US",
4+
"GB",
5+
"DE",
6+
"FR",
7+
"PL",
8+
"ES",
9+
"CA"
10+
],
11+
"bijoubrigitte": [
12+
"DE"
13+
],
14+
"calvinklein": [
15+
"US"
16+
],
17+
"aldoshoes": [
18+
"US"
19+
],
20+
"peacocks": [
21+
"GB"
22+
],
23+
"assos": [
24+
"GB"
25+
],
26+
"fnac": [
27+
"FR"
28+
],
29+
"canadatire": [
30+
"CA"
31+
]
32+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"amazon": ["US", "CA", "DE", "FR"], "walmart": ["US", "CA"], "mediamarkt": ["DE"], "zalando": ["PL"], "bestbuy": ["US"], "apple": ["US"], "whittard": ["GB"], "tiffany": ["IT"], "yellowkorner": ["FR"], "burtsbees": ["CA"]}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"ebay": ["ES", "IT", "CA", "GB"], "etsy": ["US", "CA"], "justspices": ["DE"], "lowes": ["US"], "newegg": ["US"], "wish": ["US"], "diy": ["GB"], "artsper": ["FR"], "newbalance": ["CA"]}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"url": "http://127.0.0.1:8080/calvinklein_ad.html",
3+
"field_mapping": {
4+
"given_name": "c8a58d3f-a5d2-49d7-987f-e1e5920857f3",
5+
"family_name": "bcf27b80-c32d-4c2e-842f-5e2969fdeaef",
6+
"street_address": "d7f96f01-7b95-4f27-abeb-9a26225102fa",
7+
"address_level_2": "acfe4b4d-355e-4d0a-ba8f-df4a35051268",
8+
"postal_code": "57189446-cf68-4121-9f80-c518dc0a4942",
9+
"email": "81a0174c-f1ed-4b8c-af7f-af9df3e5848b"
10+
},
11+
12+
"form_field": "*[data-moz-autofill-inspect-id='{given_name}']",
13+
"fields": [
14+
"c8a58d3f-a5d2-49d7-987f-e1e5920857f3",
15+
"bcf27b80-c32d-4c2e-842f-5e2969fdeaef",
16+
"d7f96f01-7b95-4f27-abeb-9a26225102fa",
17+
"acfe4b4d-355e-4d0a-ba8f-df4a35051268",
18+
"57189446-cf68-4121-9f80-c518dc0a4942",
19+
"81a0174c-f1ed-4b8c-af7f-af9df3e5848b"
20+
],
21+
"skipped": [
22+
"test_demo_ad_3a_autofill_address_fields.py",
23+
"test_demo_ad_3b_autofill_name_org_fields.py",
24+
"test_demo_ad_3c_autofill_phone_email_fields.py"
25+
]
26+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"url": "http://127.0.0.1:8080/calvinklein_cc.html",
3+
"field_mapping": {
4+
"name": "bce290d5-7ee7-4003-b5cb-509b63071fe8",
5+
"card_number": "024da213-3aab-4b62-8c42-43d9c129dfcf",
6+
"expiration_date": "2475dad1-ea8d-4cb4-8d17-a0c0ab402a56",
7+
"cvv": "d2e45d27-fee1-4faf-8776-bc31e629ac98"
8+
},
9+
10+
"form_field": "*[data-moz-autofill-inspect-id='{name}']",
11+
"skip": "True",
12+
"fields": [
13+
"bce290d5-7ee7-4003-b5cb-509b63071fe8",
14+
"024da213-3aab-4b62-8c42-43d9c129dfcf",
15+
"2475dad1-ea8d-4cb4-8d17-a0c0ab402a56",
16+
"d2e45d27-fee1-4faf-8776-bc31e629ac98"
17+
]
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"url": "http://127.0.0.1:8080/ceneo_ad.html",
3+
"field_mapping": {
4+
"given_name":"f8f9891d-12cd-420c-985d-70f2d8c8ec1a",
5+
"family_name":"0cb0083f-7c52-47e6-96c5-7d79b930833a",
6+
"street_address":"0508d7ab-83f5-452d-82a3-8cc66f3bff6f",
7+
"postal_code":"f4e53ce9-7da5-4a81-84ba-48949869f01a",
8+
"address_level_2": "15265be2-76bd-490b-91ab-3cb621c6f7bb",
9+
"telephone": "bf4ce736-117f-4480-a74a-d1c7ddd1248c",
10+
"email":"4e7ff8fc-f441-426a-98f4-886071d7b782"
11+
},
12+
"form_field": "*[data-moz-autofill-inspect-id='{name}']",
13+
"fields": [
14+
"4e7ff8fc-f441-426a-98f4-886071d7b782",
15+
"f8f9891d-12cd-420c-985d-70f2d8c8ec1a",
16+
"0cb0083f-7c52-47e6-96c5-7d79b930833a",
17+
"0508d7ab-83f5-452d-82a3-8cc66f3bff6f",
18+
"f4e53ce9-7da5-4a81-84ba-48949869f01a",
19+
"15265be2-76bd-490b-91ab-3cb621c6f7bb",
20+
"bf4ce736-117f-4480-a74a-d1c7ddd1248c",
21+
"4e7ff8fc-f441-426a-98f4-886071d7b782"
22+
]
23+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"url": "http://127.0.0.1:8080/ceneo_cc.html",
3+
"field_mapping": {
4+
"card_number": "11111111-aaaa-bbbb-cccc-000000000000",
5+
"expiration_date": "22222222-bbbb-cccc-dddd-111111111111",
6+
"cvv": "33333333-cccc-dddd-eeee-222222222222"
7+
},
8+
9+
"form_field": "*[data-moz-autofill-inspect-id='{name}']",
10+
"skip": "True",
11+
"fields": [
12+
"11111111-aaaa-bbbb-cccc-000000000000",
13+
"22222222-bbbb-cccc-dddd-111111111111",
14+
"33333333-cccc-dddd-eeee-222222222222"
15+
]
16+
}

0 commit comments

Comments
 (0)