commit 5d5d1047f83747d0d73e09099486f6b616cb608e
parent 2f5c54b4543ddf1fac145ef6f704cd62af2109fa
Author: Tom Marble <tmarble@info9.net>
Date: Tue, 4 Nov 2025 21:50:02 +0000
Bug 1991977 - Implement skip-fails --replace-tbd r=ahal
Updates skipfails.py to support --replace-tbd
- Improves on --known-intermittents and --new-failures modes by
recognizing previously handled failures
- Caches error log context (to support self tests)
- Consistently reports when querying treeherder ("Retrieving...")
in verbose mode
- Updates write_tasks to support writing Mock'ed tasks
- Updates write_json to ensure a final newline (to match the JSON linter)
Adds test_modes.py to test all the greening up modes
Signed-off-by: Tom Marble <tmarble@info9.net>
Differential Revision: https://phabricator.services.mozilla.com/D271085
Diffstat:
24 files changed, 2933 insertions(+), 77 deletions(-)
diff --git a/testing/mozbase/manifestparser/manifestparser/toml.py b/testing/mozbase/manifestparser/manifestparser/toml.py
@@ -289,9 +289,12 @@ class Mode:
NORMAL: int = 0
CARRYOVER: int = 1
- KNOWN_INTERMITTENTS: int = 2
- NEW_FAILURES: int = 3
+ KNOWN_INTERMITTENT: int = 2
+ NEW_FAILURE: int = 3
REPLACE_TBD: int = 4
+ CARRYOVER_FILED: int = 5
+ KNOWN_INTERMITTENT_FILED: int = 6
+ NEW_FAILURE_FILED: int = 7
class Carry:
@@ -634,3 +637,86 @@ def remove_skip_if(
del key_values["skip-if"]
return has_removed_items
+
+
+def replace_tbd_skip_if(
+ manifest: TOMLDocument, filename: str, condition: str, bugid: str
+) -> bool:
+ """
+ Edits the test ["filename"] in manifest with the given condition
+ that has a bug reference `# Bug TBD`
+ with the actual bugid
+ returns True if properly updated
+ """
+ from tomlkit import array
+ from tomlkit.items import Comment, String, Whitespace
+
+ updated: bool = False # was the TBD found and updated with bugid?
+ BUG_TBD: str = "Bug TBD" # string we are looking for
+ if filename not in manifest:
+ raise Exception(f"TOML manifest does not contain section: {filename}")
+ keyvals: dict = manifest[filename]
+ if not "skip-if" in keyvals:
+ raise Exception(
+ f"TOML manifest for section: {filename} does not contain a skip-if condition"
+ )
+ skip_if: Array = keyvals["skip-if"]
+ mp_array: Array = array()
+ conditions_array: OptConditions = []
+ first: OptStr = None # first skip-if condition
+ first_comment: str = "" # first skip-if comment
+ e_condition: OptStr = None # existing skip-if condition
+ e_comment: str = "" # existing skip-if comment
+
+ # handle the first condition uniquely to properly perserve whitespace
+ if len(skip_if) == 1:
+ for e in skip_if._iter_items():
+ if first is None:
+ if not isinstance(e, Whitespace):
+ first = e.as_string().strip('"')
+ else:
+ c = e.as_string()
+ if c != ",":
+ first_comment += c
+ if skip_if.trivia is not None:
+ first_comment += skip_if.trivia.comment
+ if first is not None:
+ if first_comment:
+ first_comment = _simplify_comment(first_comment)
+ if first == condition and first_comment.endswith(BUG_TBD):
+ i: int = max(first_comment.find(BUG_TBD), 0)
+ first_comment = f"{' ' * i}Bug {bugid}"
+ updated = True
+ e_condition = first
+ e_comment = first_comment
+
+ # loop over all skip-if conditions to find BUG_TBD
+ for e in skip_if._iter_items():
+ if isinstance(e, String):
+ if e_condition is not None:
+ conditions_array.append([e_condition, e_comment])
+ e_condition = None
+ e_comment = ""
+ if len(e) > 0:
+ e_condition = e.as_string().strip('"')
+ if e_condition == first:
+ e_condition = None # don't repeat first
+ elif isinstance(e, Comment):
+ e_comment = _simplify_comment(e.as_string())
+ if e_condition == condition and e_comment.endswith(BUG_TBD):
+ i: int = max(e_comment.find(BUG_TBD), 0)
+ e_comment = f"{' ' * i}Bug {bugid}"
+ updated = True
+ if e_condition is not None:
+ conditions_array.append([e_condition, e_comment])
+
+ # Update TOML document for the test with the updated skip-if comment
+ conditions_array.sort()
+ for c in conditions_array:
+ mp_array.add_line(c[0], indent=" ", comment=c[1])
+ mp_array.add_line("", indent="") # fixed in write_toml_str
+ skip_if = {"skip-if": mp_array}
+ del keyvals["skip-if"]
+ keyvals.update(skip_if)
+
+ return updated
diff --git a/testing/mozbase/manifestparser/tests/replace-tbd-after.toml b/testing/mozbase/manifestparser/tests/replace-tbd-after.toml
@@ -0,0 +1,28 @@
+# Replace TBD test
+[DEFAULT]
+
+["bug_3.js"]
+# This is a comment about Bug 3
+# DO NOT ADD MORE TESTS HERE
+skip-if = [
+ "os == 'linux'", # Bug 33333
+]
+
+["bug_20.js"]
+
+["bug_100.js"]
+skip-if = [
+ "os == 'android' && asan", # Bug 100
+]
+
+["test_bar.html"]
+skip-if = [
+ "os == 'linux'", # Bug 222
+ "os == 'mac'", # Bug 111
+ "os == 'win'", # Bug 333
+]
+
+["test_extend_linux.js"]
+skip-if = [
+ "os == 'mac'", # Bug 111
+]
diff --git a/testing/mozbase/manifestparser/tests/replace-tbd-before.toml b/testing/mozbase/manifestparser/tests/replace-tbd-before.toml
@@ -0,0 +1,24 @@
+# Replace TBD test
+[DEFAULT]
+
+["bug_100.js"]
+skip-if = ["os == 'android' && asan"] # Bug TBD
+
+["bug_3.js"]
+# This is a comment about Bug 3
+skip-if = ["os == 'linux'"] # Bug TBD
+# DO NOT ADD MORE TESTS HERE
+
+["test_bar.html"]
+skip-if = [
+ "os == 'mac'", # Bug 111
+ "os == 'linux'", # Bug TBD
+ "os == 'win'", # Bug 333
+]
+
+["test_extend_linux.js"]
+skip-if = [
+ "os == 'mac'", # Bug TBD
+]
+
+['bug_20.js']
diff --git a/testing/mozbase/manifestparser/tests/test_toml.py b/testing/mozbase/manifestparser/tests/test_toml.py
@@ -4,9 +4,71 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
+import os
+
import mozunit
import pytest
-from manifestparser.toml import Carry
+from manifestparser import ManifestParser
+from manifestparser.toml import Carry, alphabetize_toml_str, replace_tbd_skip_if
+from tomlkit.toml_document import TOMLDocument
+
+here = os.path.dirname(os.path.abspath(__file__))
+
+
+def test_replace_tbd_skip_if():
+ parser = ManifestParser(use_toml=True, document=True)
+ before = "replace-tbd-before.toml"
+ before_path = os.path.join(here, before)
+ parser.read(before_path)
+ assert before_path in parser.source_documents
+ manifest = parser.source_documents[before_path]
+ assert manifest is not None
+ assert isinstance(manifest, TOMLDocument)
+
+ filename = "non-existant.js"
+ condition = "os == 'android' && asan"
+ bugid = "100"
+ updated: bool = False
+ with pytest.raises(Exception) as e:
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated # Fail here if no exception thrown
+ assert str(e.value) == "TOML manifest does not contain section: non-existant.js"
+ filename = "DEFAULT"
+ with pytest.raises(Exception) as e:
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated # Fail here if no exception thrown
+ assert (
+ str(e.value)
+ == "TOML manifest for section: DEFAULT does not contain a skip-if condition"
+ )
+
+ filename = "bug_100.js"
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated
+
+ filename = "bug_3.js"
+ condition = "os == 'linux'"
+ bugid = "33333"
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated
+
+ filename = "test_bar.html"
+ condition = "os == 'linux'"
+ bugid = "222"
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated
+
+ filename = "test_extend_linux.js"
+ condition = "os == 'mac'"
+ bugid = "111"
+ updated = replace_tbd_skip_if(manifest, filename, condition, bugid)
+ assert updated
+
+ manifest_str = alphabetize_toml_str(manifest)
+ after = "replace-tbd-after.toml"
+ after_path = os.path.join(here, after)
+ after_str = open(after_path, encoding="utf-8").read()
+ assert manifest_str == after_str
@pytest.fixture(scope="session")
diff --git a/testing/skipfails.py b/testing/skipfails.py
@@ -32,6 +32,7 @@ from manifestparser.toml import (
Mode,
add_skip_if,
alphabetize_toml_str,
+ replace_tbd_skip_if,
sort_paths,
)
from mozci.push import Push
@@ -202,7 +203,10 @@ def write_json(filename: str, data):
if not os.path.isdir(parent):
os.mkdir(parent)
with open(filename, "w", encoding="utf-8") as fp:
- json.dump(data, fp, indent=2, sort_keys=True, default=default_serializer)
+ s: str = json.dumps(data, indent=2, sort_keys=True, default=default_serializer)
+ if s[-1] != "\n":
+ s += "\n" # end with newline to match JSON linter
+ fp.write(s)
class Mock:
@@ -273,9 +277,9 @@ class SkipfailsMode(Mode):
if carryover_mode:
return cls.CARRYOVER
elif known_intermittents_mode:
- return cls.KNOWN_INTERMITTENTS
+ return cls.KNOWN_INTERMITTENT
elif new_failures_mode:
- return cls.NEW_FAILURES
+ return cls.NEW_FAILURE
elif replace_tbd_mode:
return cls.REPLACE_TBD
return cls.NORMAL
@@ -290,9 +294,9 @@ class SkipfailsMode(Mode):
def description(cls, mode: int) -> str:
if mode == cls.CARRYOVER:
return "Carryover mode: only platform match conditions considered, no bugs created or updated"
- elif mode == cls.KNOWN_INTERMITTENTS:
+ elif mode == cls.KNOWN_INTERMITTENT:
return "Known Intermittents mode: only failures with known intermittents considered, no bugs created or updated"
- elif mode == cls.NEW_FAILURES:
+ elif mode == cls.NEW_FAILURE:
return "New failures mode: Will only edit manifest skip-if conditions for new failures (i.e. not carryover nor known intermittents)"
elif mode == cls.REPLACE_TBD:
return "Replace TBD mode: Will only edit manifest skip-if conditions for new failures by filing new bugs and replacing TBD with actual bug number."
@@ -300,16 +304,38 @@ class SkipfailsMode(Mode):
@classmethod
def name(cls, mode: int) -> str:
+ if mode == cls.NORMAL:
+ return "NORMAL"
if mode == cls.CARRYOVER:
return "CARRYOVER"
- elif mode == cls.KNOWN_INTERMITTENTS:
+ elif mode == cls.KNOWN_INTERMITTENT:
return "KNOWN_INTERMITTENT"
- elif mode == cls.NEW_FAILURES:
+ elif mode == cls.NEW_FAILURE:
return "NEW_FAILURE"
elif mode == cls.REPLACE_TBD:
return "REPLACE_TBD"
+ if mode == cls.CARRYOVER_FILED:
+ return "CARRYOVER_FILED"
+ elif mode == cls.KNOWN_INTERMITTENT_FILED:
+ return "KNOWN_INTERMITTENT_FILED"
+ elif mode == cls.NEW_FAILURE_FILED:
+ return "NEW_FAILURE_FILED"
return ""
+ @classmethod
+ def bug_filed(cls, mode: int) -> int:
+ if mode == cls.CARRYOVER:
+ return cls.CARRYOVER_FILED
+ elif mode == cls.KNOWN_INTERMITTENT:
+ return cls.KNOWN_INTERMITTENT_FILED
+ elif mode == cls.NEW_FAILURE:
+ return cls.NEW_FAILURE_FILED
+ else:
+ raise Exception(
+ f"Skipfails mode {cls.name(mode)} cannot be promoted to a _FILED mode"
+ )
+ return mode
+
class Action:
"""
@@ -542,10 +568,12 @@ class Skipfails:
def file_age(self, path: str) -> float:
"""Returns age of filename in seconds"""
- stat: os.stat_result = os.stat(path)
- mtime: float = stat.st_mtime
- now: float = time.time()
- age: float = now - mtime
+ age: float = 0.0
+ if os.path.exists(path):
+ stat: os.stat_result = os.stat(path)
+ mtime: float = stat.st_mtime
+ now: float = time.time()
+ age = now - mtime
return age
def delete_dir(self, path: str) -> None:
@@ -578,6 +606,7 @@ class Skipfails:
):
"Run skip-fails on try_url, return True on success"
+ self.mode = mode
if self.mode != Mode.NORMAL and meta_bug_id is None:
raise Exception(
"must specifiy --meta-bug-id when using one of: --carryover --known-intermittents --new-failures --replace-tbd"
@@ -656,12 +685,13 @@ class Skipfails:
status = FAIL
lineno = failures[manifest][LL][label][PP][path].get(LINENO, 0)
runs: Runs = failures[manifest][LL][label][PP][path][RUNS]
+ k = Action.make_key(manifest, path, label)
if (
- self.mode == Mode.NEW_FAILURES
- and Action.make_key(manifest, path, label) in self.actions
+ self.mode in [Mode.KNOWN_INTERMITTENT, Mode.NEW_FAILURE]
+ and k in self.actions
):
self.info(
- f"\n\n===== Previously handled failure in manifest: {manifest} ====="
+ f"\n\n===== Previously handled {SkipfailsMode.name(self.actions[k].disposition)} in manifest: {manifest} ====="
)
self.info(f" path: {path}")
self.info(f" label: {label}")
@@ -728,7 +758,7 @@ class Skipfails:
return True
self.cache_job_ids(revision)
if self.mode != Mode.NORMAL:
- self.save_actions(meta_bug_id)
+ self.write_actions(meta_bug_id)
return True
def get_revision(self, url):
@@ -751,6 +781,7 @@ class Skipfails:
return revision, repo
def get_tasks(self, revision, repo):
+ self.vinfo(f"Retrieving tasks for revision: {revision} ...")
push = Push(revision, repo)
tasks = None
try:
@@ -1173,6 +1204,7 @@ class Skipfails:
bug = b
break
if bug is None and self._initialize_bzapi():
+ self.vinfo(f"Retrieving bug id: {id} ...")
bug = self._bzapi.getbug(id)
return bug
@@ -1193,6 +1225,7 @@ class Skipfails:
bugs.append(bug)
return bugs
if len(bugs) == 0 and self.bugzilla is not None and self._initialize_bzapi():
+ self.vinfo(f"Retrieving bugs by summary: {summary} ...")
query = self._bzapi.build_query(short_desc=summary)
query["include_fields"] = [
"id",
@@ -1504,7 +1537,7 @@ class Skipfails:
bugid: OptInt
if bug_id is None:
- if self.mode == Mode.KNOWN_INTERMITTENTS and kind == Kind.TOML:
+ if self.mode == Mode.KNOWN_INTERMITTENT and kind == Kind.TOML:
(bugid, comment, line_number) = self.find_known_intermittent(
repo, revision, task_id, manifest, filename, skip_if
)
@@ -1553,7 +1586,7 @@ class Skipfails:
bug_reference: str = f"Bug {bugid}"
if classification == Classification.SECONDARY and kind != Kind.WPT:
bug_reference += " (secondary)"
- if self.mode == Mode.NEW_FAILURES:
+ if self.mode == Mode.NEW_FAILURE:
action = Action(
manifest=manifest,
path=path,
@@ -1665,7 +1698,7 @@ class Skipfails:
self.warning(additional_comment)
if manifest_str:
if line_number is not None:
- comment += "\n" + self.error_log_context(task_id, line_number)
+ comment += "\n" + self.error_log_context(revision, task_id, line_number)
if additional_comment:
comment += "\n" + additional_comment
if action is not None:
@@ -1684,7 +1717,7 @@ class Skipfails:
)
if bug_id is None:
return
- if self.mode in [Mode.NORMAL, Mode.REPLACE_TBD]:
+ if self.mode == Mode.NORMAL:
if self.bugzilla is None:
self.vinfo(
f"Bugzilla has been disabled: comment not added to Bug {bugid}:\n{comment}"
@@ -1710,7 +1743,7 @@ class Skipfails:
self.error(f'Error editing ["{filename}"] in manifest: "{manifest}"')
def replace_tbd(self, meta_bug_id: int):
- # First pass: file new bugs for TBD
+ # First pass: file new bugs for TBD, collect comments by bugid
comments_by_bugid: DictStrList = {}
for k in self.actions:
action: Action = self.actions[k]
@@ -1720,7 +1753,13 @@ class Skipfails:
self.info(f" skip_if: {action.skip_if}")
self.info(f" disposition: {SkipfailsMode.name(action.disposition)}")
self.info(f" bug_id: {action.bugid}")
- if action.disposition == Mode.NEW_FAILURES:
+
+ kind: Kind = Kind.TOML
+ if not action.manifest.endswith(".toml"):
+ raise Exception(
+ f'Only TOML manifests supported for --replace-tbd: "{action.manifest}"'
+ )
+ if action.disposition == Mode.NEW_FAILURE:
if self.bugzilla is None:
self.vinfo(
f"Bugzilla has been disabled: new bug not created for Bug {action.bugid}"
@@ -1748,34 +1787,60 @@ class Skipfails:
raise Exception(
f'More than one bug found for summary: "{action.summary}"'
)
- self.warning(
- f"NOT IMPLEMENTED YET replacing TBD in manifest {action.manifest}"
+ manifest_path: str = self.full_path(action.manifest)
+ filename: str = self.resolve_failure_filename(
+ action.path, kind, action.manifest
+ )
+
+ mp = ManifestParser(use_toml=True, document=True)
+ mp.read(manifest_path)
+ document = mp.source_documents[manifest_path]
+ updated = replace_tbd_skip_if(
+ document, filename, action.skip_if, action.bugid
)
+ if updated:
+ manifest_str = alphabetize_toml_str(document)
+ with open(
+ manifest_path, "w", encoding="utf-8", newline="\n"
+ ) as fp:
+ fp.write(manifest_str)
+ self.info(
+ f'Edited ["{filename}"] in manifest: "{action.manifest}"'
+ )
+ else:
+ self.error(
+ f'Error editing ["{filename}"] in manifest: "{action.manifest}"'
+ )
self.actions[k] = action
- # Second pass: collect comments by bugid
- for k in self.actions:
- action: Action = self.actions[k]
comments: ListStr = comments_by_bugid.get(action.bugid, [])
comments.append(action.comment)
comments_by_bugid[action.bugid] = comments
- # Add combined comment for each bugid
- for bugid in comments_by_bugid:
- self.info(f"\n\n===== Filing Combined Comment for Bug {bugid} =====")
- comment: str = ""
- comments = comments_by_bugid[bugid]
- for c in comments:
- comment += c + "\n"
- if self.bugzilla is None:
- self.vinfo(
- f"Bugzilla has been disabled: comment not added to Bug {bugid}:\n{comment}"
- )
- elif self.dry_run:
- self.vinfo(
- f"Flag --dry-run: comment not added to Bug {bugid}:\n{comment}"
+ # Second pass: Add combined comment for each bugid
+ for k in self.actions:
+ action: Action = self.actions[k]
+ comments: ListStr = comments_by_bugid.get(action.bugid, [])
+ if self.bugzilla is not None and not self.dry_run:
+ action.disposition = SkipfailsMode.bug_filed(action.disposition)
+ self.actions[k] = action
+ if len(comments) > 0: # comments not yet added
+ self.info(
+ f"\n\n===== Filing Combined Comment for Bug {action.bugid} ====="
)
- else:
- self.add_bug_comment(int(bugid), comment)
- self.info(f"Added comment to Bug {bugid}:\n{comment}")
+ comment: str = ""
+ for c in comments:
+ comment += c + "\n"
+ if self.bugzilla is None:
+ self.vinfo(
+ f"Bugzilla has been disabled: comment not added to Bug {action.bugid}:\n{comment}"
+ )
+ elif self.dry_run:
+ self.vinfo(
+ f"Flag --dry-run: comment not added to Bug {action.bugid}:\n{comment}"
+ )
+ else:
+ self.add_bug_comment(int(action.bugid), comment)
+ self.info(f"Added comment to Bug {action.bugid}:\n{comment}")
+ comments_by_bugid[action.bugid] = []
def get_variants(self):
"""Get mozinfo for each test variants"""
@@ -1863,6 +1928,7 @@ class Skipfails:
break
if url is not None:
+ self.vinfo("Retrieving platform permutations ...")
response = requests.get(url, headers={"User-agent": "mach-test-info/1.0"})
self.platform_permutations = response.json()
else:
@@ -2052,6 +2118,7 @@ class Skipfails:
"""Return the push_id for revision and repo (or None)"""
if revision in self.push_ids: # if cached
+ self.vinfo(f"Getting push_id for {repo} revision: {revision} ...")
push_id = self.push_ids[revision]
else:
push_id = None
@@ -2096,6 +2163,7 @@ class Skipfails:
k = f"{push_id}:{task_id}"
if k in self.job_ids: # if cached
+ self.vinfo(f"Getting job_id for push_id: {push_id}, task_id: {task_id} ...")
job_id = self.job_ids[k]
else:
job_id = None
@@ -2127,10 +2195,16 @@ class Skipfails:
"""
if job_id in self.suggestions:
+ self.vinfo(
+ f"Getting bug_suggestions for {repo} revision: {revision} job_id: {job_id}"
+ )
suggestions = self.suggestions[job_id]
else:
suggestions_path = self.cached_path(revision, f"suggest-{job_id}.json")
if os.path.exists(suggestions_path):
+ self.vinfo(
+ f"Reading cached bug_suggestions for {repo} revision: {revision} job_id: {job_id}"
+ )
suggestions = read_json(suggestions_path)
else:
suggestions_url = f"https://treeherder.mozilla.org/api/project/{repo}/jobs/{job_id}/bug_suggestions/"
@@ -2215,9 +2289,6 @@ class Skipfails:
"""saves tasks as JSON to save_tasks"""
jtasks = []
for task in tasks:
- if not isinstance(task, TestTask):
- continue
-
extras = self.get_extra(task.id)
if not extras:
continue
@@ -2253,7 +2324,10 @@ class Skipfails:
except TaskclusterRestFailure:
continue
for k in failure_types:
- jft[k] = [[f[0], f[1].value] for f in task.failure_types[k]]
+ if isinstance(task, TestTask):
+ jft[k] = [[f[0], f[1].value] for f in task.failure_types[k]]
+ else:
+ jft[k] = [[f[0], f[1]] for f in task.failure_types[k]]
jtask["failure_types"] = jft
jtasks.append(jtask)
write_json(save_tasks, jtasks)
@@ -2262,6 +2336,7 @@ class Skipfails:
"""Adds compressed log for this task to bugid"""
log_url = f"https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/{task_id}/artifacts/public/logs/live_backing.log"
+ self.vinfo(f"Retrieving full log for task: {task_id}")
r = requests.get(log_url, headers=self.headers)
if r.status_code != 200:
self.error(f"Unable to get log for task: {task_id}")
@@ -2561,7 +2636,7 @@ class Skipfails:
if len(allpaths) > 0:
return allpaths # cached (including self tests)
error_url = f"https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/{task_id}/artifacts/public/test_info/reftest_errorsummary.log"
- self.vinfo(f"Requesting reftest_errorsummary.log for task: {task_id}")
+ self.vinfo(f"Retrieving reftest_errorsummary.log for task: {task_id}")
r = requests.get(error_url, headers=self.headers)
if r.status_code != 200:
self.error(f"Unable to get reftest_errorsummary.log for task: {task_id}")
@@ -2687,33 +2762,47 @@ class Skipfails:
comment += f"\nError log line {line_number}: {log_url}"
return (bugid, comment, line_number)
- def error_log_context(self, task_id: str, line_number: int) -> str:
- delta: int = 10
+ def error_log_context(self, revision: str, task_id: str, line_number: int) -> str:
context: str = ""
- log_url = f"https://firefoxci.taskcluster-artifacts.net/{task_id}/0/public/logs/live_backing.log"
- r = requests.get(log_url, headers=self.headers)
- if r.status_code != 200:
- self.warning(f"Unable to get log for task: {task_id}")
- return context
- log: str = r.text
- n: int = len(log)
- i: int = 0
- j: int = log.find("\n", i)
- if j < 0:
- j = n
- line: int = 1
- prefix: str
- while i < n:
- if line >= line_number - delta and line <= line_number + delta:
- prefix = f"{line:6d}"
- if line == line_number:
- prefix = prefix.replace(" ", ">")
- context += f"{prefix}: {log[i:j]}\n"
- i = j + 1
- j = log.find("\n", i)
+ context_path: str = self.cached_path(
+ revision, f"context-{task_id}-{line_number}.txt"
+ )
+ path = Path(context_path)
+ if path.exists():
+ self.vinfo(
+ f"Reading cached error log context for revision: {revision} task-id: {task_id} line: {line_number}"
+ )
+ context = path.read_text(encoding="utf-8")
+ else:
+ delta: int = 10
+ log_url = f"https://firefoxci.taskcluster-artifacts.net/{task_id}/0/public/logs/live_backing.log"
+ self.vinfo(
+ f"Retrieving error log context for revision: {revision} task-id: {task_id} line: {line_number}"
+ )
+ r = requests.get(log_url, headers=self.headers)
+ if r.status_code != 200:
+ self.warning(f"Unable to get log for task: {task_id}")
+ return context
+ log: str = r.text
+ n: int = len(log)
+ i: int = 0
+ j: int = log.find("\n", i)
if j < 0:
j = n
- line += 1
+ line: int = 1
+ prefix: str
+ while i < n:
+ if line >= line_number - delta and line <= line_number + delta:
+ prefix = f"{line:6d}"
+ if line == line_number:
+ prefix = prefix.replace(" ", ">")
+ context += f"{prefix}: {log[i:j]}\n"
+ i = j + 1
+ j = log.find("\n", i)
+ if j < 0:
+ j = n
+ line += 1
+ path.write_text(context, encoding="utf-8")
return context
def read_actions(self, meta_bug_id: int):
@@ -2730,7 +2819,7 @@ class Skipfails:
if k not in self.actions: # do not supercede newly created actions
self.actions[k] = Action(**actions[k])
- def save_actions(self, meta_bug_id: int):
+ def write_actions(self, meta_bug_id: int):
cache_dir = self.full_path(CACHE_DIR)
meta_dir = os.path.join(cache_dir, str(meta_bug_id))
actions_path = os.path.join(meta_dir, "actions.json")
diff --git a/testing/test/data/actions-carryover.json b/testing/test/data/actions-carryover.json
@@ -0,0 +1,17 @@
+{
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7": {
+ "bugid": "1111111",
+ "comment": "Disabled test due to failures in test file: \"browser_aboutNewTab_bookmarksToolbar.js\"",
+ "component": "",
+ "description": "",
+ "disposition": 1,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "product": "",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking",
+ "summary": "",
+ "task_id": "BLpDT23eSfO-Xf_NLrMkCA"
+ }
+}
diff --git a/testing/test/data/actions-known.json b/testing/test/data/actions-known.json
@@ -0,0 +1,32 @@
+{
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7": {
+ "bugid": "1111111",
+ "comment": "Disabled test due to failures in test file: \"browser_aboutNewTab_bookmarksToolbar.js\"",
+ "component": "",
+ "description": "",
+ "disposition": 1,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "product": "",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking",
+ "summary": "",
+ "task_id": "BLpDT23eSfO-Xf_NLrMkCA"
+ },
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y": {
+ "bugid": "1962169",
+ "comment": "Intermittent failure in manifest: \".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml\"\n in test: \"[browser_focus_document.js]\"\n added skip-if: \"os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt\"\nError log line 4028: https://treeherder.mozilla.org/logviewer?repo=try&job_id=531522970&lineNumber=4028\n 4018: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - _beginRemoveTab@chrome://browser/content/tabbrowser/tabbrowser.js:5202:14\n 4019: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - removeTab@chrome://browser/content/tabbrowser/tabbrowser.js:5031:15\n 4020: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Tester_waitForWindowsState@chrome://mochikit/content/browser-test.js:484:18\n 4021: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - nextTest@chrome://mochikit/content/browser-test.js:1118:10\n 4022: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - async*testScope/test_finish/<@chrome://mochikit/content/browser-test.js:1947:25\n 4023: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - run@chrome://mochikit/content/browser-test.js:1867:9\n 4024: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - \n 4025: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | <browser> should be focused - \n 4026: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | window should be properly focused - \n 4027: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Buffered messages finished\n>>4028: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - TEST-UNEXPECTED-FAIL | accessible/tests/browser/events/browser_focus_document.js | IME should be enabled - 0 == 1 - got 0, expected 1 (operator ==)\n 4029: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - Stack trace:\n 4030: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - is@resource://testing-common/SpecialPowersSandbox.sys.mjs:88:21\n 4031: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - @chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:80:9\n 4032: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - execute@resource://testing-common/SpecialPowersSandbox.sys.mjs:139:12\n 4033: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - _spawnTask@resource://testing-common/SpecialPowersChild.sys.mjs:1618:15\n 4034: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - receiveMessage@resource://testing-common/SpecialPowersChild.sys.mjs:256:21\n 4035: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*receiveMessage@resource://testing-common/SpecialPowersParent.sys.mjs:1413:14\n 4036: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*spawn@resource://testing-common/SpecialPowersChild.sys.mjs:1545:17\n 4037: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - testLocalThenRemoteWithAutofocus@chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:78:25\n 4038: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - async*accessibleTask/wrapped/<@chrome://mochitests/content/browser/accessible/tests/browser/shared-head.js:636:15\n",
+ "component": "",
+ "description": "",
+ "disposition": 2,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js",
+ "product": "",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt",
+ "summary": "",
+ "task_id": "BarnNoFwSCGQtnNGH-o08w"
+ }
+}
diff --git a/testing/test/data/actions-new.json b/testing/test/data/actions-new.json
@@ -0,0 +1,47 @@
+{
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7": {
+ "bugid": "1111111",
+ "comment": "Disabled test due to failures in test file: \"browser_aboutNewTab_bookmarksToolbar.js\"",
+ "component": "",
+ "description": "",
+ "disposition": 1,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "product": "",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking",
+ "summary": "",
+ "task_id": "BLpDT23eSfO-Xf_NLrMkCA"
+ },
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3": {
+ "bugid": "TBD",
+ "comment": "Disabled test due to failures in test file: \"browser_cross_process_csp_inheritance.js\"\nError log line 12581: https://treeherder.mozilla.org/logviewer?repo=try&job_id=531523119&lineNumber=12581\n 12571: [task 2025-10-16T02:26:19.832+00:00] 02:26:19 INFO - *** End BrowserChrome Test Results ***\n 12572: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12573: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12574: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12575: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12576: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12577: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12578: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12579: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.\n 12580: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-INFO | Main app process: exit 0\n>12581: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-UNEXPECTED-FAIL | docshell/test/browser/browser_cross_process_csp_inheritance.js | Application shut down (without crashing) in the middle of a test!\n 12582: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-INFO took 46102ms\n 12583: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - runtests.py | Application ran for: 0:01:40.912547\n 12584: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - zombiecheck | Reading PID log: /tmp/tmpvmj_3tappidlog\n 12585: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3031\n 12586: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3032\n 12587: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3033\n 12588: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3035\n 12589: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3036\n 12590: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3037\n 12591: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3038\n",
+ "component": "General",
+ "description": "This bug covers excluded failing tests in the MANIFEST .skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml\n(generated by `mach manifest skip-fails`)",
+ "disposition": 3,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "product": "Testing",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt",
+ "summary": "MANIFEST .skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "task_id": "O304PG2lSOuef7JzFoSaow"
+ },
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml|.skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js|test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y": {
+ "bugid": "1962169",
+ "comment": "Intermittent failure in manifest: \".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml\"\n in test: \"[browser_focus_document.js]\"\n added skip-if: \"os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt\"\nError log line 4028: https://treeherder.mozilla.org/logviewer?repo=try&job_id=531522970&lineNumber=4028\n 4018: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - _beginRemoveTab@chrome://browser/content/tabbrowser/tabbrowser.js:5202:14\n 4019: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - removeTab@chrome://browser/content/tabbrowser/tabbrowser.js:5031:15\n 4020: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Tester_waitForWindowsState@chrome://mochikit/content/browser-test.js:484:18\n 4021: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - nextTest@chrome://mochikit/content/browser-test.js:1118:10\n 4022: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - async*testScope/test_finish/<@chrome://mochikit/content/browser-test.js:1947:25\n 4023: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - run@chrome://mochikit/content/browser-test.js:1867:9\n 4024: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - \n 4025: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | <browser> should be focused - \n 4026: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | window should be properly focused - \n 4027: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Buffered messages finished\n>>4028: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - TEST-UNEXPECTED-FAIL | accessible/tests/browser/events/browser_focus_document.js | IME should be enabled - 0 == 1 - got 0, expected 1 (operator ==)\n 4029: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - Stack trace:\n 4030: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - is@resource://testing-common/SpecialPowersSandbox.sys.mjs:88:21\n 4031: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - @chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:80:9\n 4032: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - execute@resource://testing-common/SpecialPowersSandbox.sys.mjs:139:12\n 4033: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - _spawnTask@resource://testing-common/SpecialPowersChild.sys.mjs:1618:15\n 4034: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - receiveMessage@resource://testing-common/SpecialPowersChild.sys.mjs:256:21\n 4035: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*receiveMessage@resource://testing-common/SpecialPowersParent.sys.mjs:1413:14\n 4036: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*spawn@resource://testing-common/SpecialPowersChild.sys.mjs:1545:17\n 4037: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - testLocalThenRemoteWithAutofocus@chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:78:25\n 4038: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - async*accessibleTask/wrapped/<@chrome://mochitests/content/browser/accessible/tests/browser/shared-head.js:636:15\n",
+ "component": "",
+ "description": "",
+ "disposition": 2,
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "manifest": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "path": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js",
+ "product": "",
+ "revision": "7cf7a9720f4ead03213f1799f3dcc00a413c7a02",
+ "skip_if": "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt",
+ "summary": "",
+ "task_id": "BarnNoFwSCGQtnNGH-o08w"
+ }
+}
diff --git a/testing/test/data/browser-before.toml b/testing/test/data/browser-before.toml
@@ -0,0 +1,7 @@
+[DEFAULT]
+
+["browser_aboutNewTab_bookmarksToolbar.js"]
+skip-if = [
+ "debug && verify-standalone",
+ "os == 'mac' && os_version == '11.20' && arch == 'aarch64'", # bug 1111111
+]
diff --git a/testing/test/data/browser-carryover.toml b/testing/test/data/browser-carryover.toml
@@ -0,0 +1,13 @@
+[DEFAULT]
+
+["browser_aboutNewTab_bookmarksToolbar.js"]
+skip-if = [
+ "debug && verify-standalone",
+ "os == 'mac' && os_version == '11.20' && arch == 'aarch64'", # bug 1111111
+ "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking", # bug 1111111
+]
+
+["browser_cross_process_csp_inheritance.js"]
+https_first_disabled = true
+
+["browser_focus_document.js"]
diff --git a/testing/test/data/browser-known.toml b/testing/test/data/browser-known.toml
@@ -0,0 +1,14 @@
+[DEFAULT]
+
+["browser_aboutNewTab_bookmarksToolbar.js"]
+skip-if = [
+ "debug && verify-standalone",
+ "os == 'mac' && os_version == '11.20' && arch == 'aarch64'", # bug 1111111
+ "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking", # bug 1111111
+]
+
+["browser_cross_process_csp_inheritance.js"]
+https_first_disabled = true
+
+["browser_focus_document.js"]
+skip-if = ["os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt"] # Bug 1962169
diff --git a/testing/test/data/browser-new.toml b/testing/test/data/browser-new.toml
@@ -0,0 +1,15 @@
+[DEFAULT]
+
+["browser_aboutNewTab_bookmarksToolbar.js"]
+skip-if = [
+ "debug && verify-standalone",
+ "os == 'mac' && os_version == '11.20' && arch == 'aarch64'", # bug 1111111
+ "os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt && socketprocess_networking", # bug 1111111
+]
+
+["browser_cross_process_csp_inheritance.js"]
+https_first_disabled = true
+skip-if = ["os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt"] # Bug TBD
+
+["browser_focus_document.js"]
+skip-if = ["os == 'mac' && os_version == '15.30' && arch == 'aarch64' && opt"] # Bug 1962169
diff --git a/testing/test/data/browser.toml b/testing/test/data/browser.toml
@@ -0,0 +1,12 @@
+[DEFAULT]
+
+["browser_aboutNewTab_bookmarksToolbar.js"]
+skip-if = [
+ "debug && verify-standalone",
+ "os == 'mac' && os_version == '11.20' && arch == 'aarch64'", # bug 1111111
+]
+
+["browser_cross_process_csp_inheritance.js"]
+https_first_disabled = true
+
+["browser_focus_document.js"]
diff --git a/testing/test/data/context-BarnNoFwSCGQtnNGH-o08w-4028.txt b/testing/test/data/context-BarnNoFwSCGQtnNGH-o08w-4028.txt
@@ -0,0 +1,21 @@
+ 4018: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - _beginRemoveTab@chrome://browser/content/tabbrowser/tabbrowser.js:5202:14
+ 4019: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - removeTab@chrome://browser/content/tabbrowser/tabbrowser.js:5031:15
+ 4020: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Tester_waitForWindowsState@chrome://mochikit/content/browser-test.js:484:18
+ 4021: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - nextTest@chrome://mochikit/content/browser-test.js:1118:10
+ 4022: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - async*testScope/test_finish/<@chrome://mochikit/content/browser-test.js:1947:25
+ 4023: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - run@chrome://mochikit/content/browser-test.js:1867:9
+ 4024: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO -
+ 4025: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | <browser> should be focused -
+ 4026: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - TEST-PASS | accessible/tests/browser/events/browser_focus_document.js | window should be properly focused -
+ 4027: [task 2025-10-15T20:39:21.046+00:00] 20:39:21 INFO - Buffered messages finished
+>>4028: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - TEST-UNEXPECTED-FAIL | accessible/tests/browser/events/browser_focus_document.js | IME should be enabled - 0 == 1 - got 0, expected 1 (operator ==)
+ 4029: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - Stack trace:
+ 4030: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - is@resource://testing-common/SpecialPowersSandbox.sys.mjs:88:21
+ 4031: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - @chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:80:9
+ 4032: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - execute@resource://testing-common/SpecialPowersSandbox.sys.mjs:139:12
+ 4033: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - _spawnTask@resource://testing-common/SpecialPowersChild.sys.mjs:1618:15
+ 4034: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - receiveMessage@resource://testing-common/SpecialPowersChild.sys.mjs:256:21
+ 4035: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*receiveMessage@resource://testing-common/SpecialPowersParent.sys.mjs:1413:14
+ 4036: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - JSActor query*spawn@resource://testing-common/SpecialPowersChild.sys.mjs:1545:17
+ 4037: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - testLocalThenRemoteWithAutofocus@chrome://mochitests/content/browser/accessible/tests/browser/events/browser_focus_document.js:78:25
+ 4038: [task 2025-10-15T20:39:21.047+00:00] 20:39:21 INFO - async*accessibleTask/wrapped/<@chrome://mochitests/content/browser/accessible/tests/browser/shared-head.js:636:15
diff --git a/testing/test/data/context-O304PG2lSOuef7JzFoSaow-12581.txt b/testing/test/data/context-O304PG2lSOuef7JzFoSaow-12581.txt
@@ -0,0 +1,21 @@
+ 12571: [task 2025-10-16T02:26:19.832+00:00] 02:26:19 INFO - *** End BrowserChrome Test Results ***
+ 12572: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12573: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12574: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12575: [task 2025-10-16T02:26:19.855+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12576: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12577: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12578: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12579: [task 2025-10-16T02:26:19.856+00:00] 02:26:19 INFO - GECKO(3028) | Exiting due to channel error.
+ 12580: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-INFO | Main app process: exit 0
+>12581: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-UNEXPECTED-FAIL | docshell/test/browser/browser_cross_process_csp_inheritance.js | Application shut down (without crashing) in the middle of a test!
+ 12582: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - TEST-INFO took 46102ms
+ 12583: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - runtests.py | Application ran for: 0:01:40.912547
+ 12584: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - zombiecheck | Reading PID log: /tmp/tmpvmj_3tappidlog
+ 12585: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3031
+ 12586: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3032
+ 12587: [task 2025-10-16T02:26:19.857+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3033
+ 12588: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3035
+ 12589: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3036
+ 12590: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3037
+ 12591: [task 2025-10-16T02:26:19.858+00:00] 02:26:19 INFO - ==> process 3028 launched child process 3038
diff --git a/testing/test/data/failures.json b/testing/test/data/failures.json
@@ -0,0 +1,108 @@
+{
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": {
+ "kind": "toml",
+ "label": {
+ "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y": {
+ "duration_median": 14957,
+ "duration_total": 45611,
+ "durations": {
+ "BarnNoFwSCGQtnNGH-o08w": 14289,
+ "C_XuuTJQR0GSDLSfBpNRAA": 14957,
+ "IUDOeGXiT6WaMLsq5pVuxw": 16365
+ },
+ "opt": false,
+ "path": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js": {
+ "classification": "disable_recommended",
+ "runs": {
+ "BarnNoFwSCGQtnNGH-o08w": {
+ "result": false
+ },
+ "C_XuuTJQR0GSDLSfBpNRAA": {
+ "result": true
+ },
+ "IUDOeGXiT6WaMLsq5pVuxw": {
+ "result": false
+ }
+ },
+ "runs_failed": 2,
+ "runs_total": 3
+ }
+ },
+ "sum_by_label": {
+ "disable_recommended": 1
+ }
+ },
+ "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3": {
+ "duration_median": 98675,
+ "duration_total": 300822,
+ "durations": {
+ "GVQ_K2n_RBejehx1xRFoLQ": 103742,
+ "O304PG2lSOuef7JzFoSaow": 98405,
+ "bJvpe8XST6u8nvaHgclfdg": 98675
+ },
+ "opt": false,
+ "path": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js": {
+ "classification": "disable_recommended",
+ "runs": {
+ "GVQ_K2n_RBejehx1xRFoLQ": {
+ "result": true
+ },
+ "O304PG2lSOuef7JzFoSaow": {
+ "result": false
+ },
+ "bJvpe8XST6u8nvaHgclfdg": {
+ "result": false
+ }
+ },
+ "runs_failed": 2,
+ "runs_total": 3
+ }
+ },
+ "sum_by_label": {
+ "disable_recommended": 1
+ }
+ },
+ "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7": {
+ "duration_median": 96251,
+ "duration_total": 478529,
+ "durations": {
+ "BLpDT23eSfO-Xf_NLrMkCA": 97294,
+ "KcghbItLQjK-d_-pUH8hXg": 96267,
+ "LoJI3MxsQOa4ksZcnjQNsg": 96251,
+ "QCOa0hGUQCirGQe7TdXjxQ": 93095,
+ "f5oEIL1sTR2FAxyJHmEreQ": 95622
+ },
+ "opt": false,
+ "path": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js": {
+ "classification": "disable_recommended",
+ "runs": {
+ "BLpDT23eSfO-Xf_NLrMkCA": {
+ "result": false
+ },
+ "KcghbItLQjK-d_-pUH8hXg": {
+ "result": false
+ },
+ "LoJI3MxsQOa4ksZcnjQNsg": {
+ "result": false
+ },
+ "QCOa0hGUQCirGQe7TdXjxQ": {
+ "result": false
+ },
+ "f5oEIL1sTR2FAxyJHmEreQ": {
+ "result": false
+ }
+ },
+ "runs_failed": 5,
+ "runs_total": 5
+ }
+ },
+ "sum_by_label": {
+ "disable_recommended": 1
+ }
+ }
+ }
+ }
+}
diff --git a/testing/test/data/job_ids.json b/testing/test/data/job_ids.json
@@ -0,0 +1,5 @@
+{
+ "1747180:BLpDT23eSfO-Xf_NLrMkCA": 531522979,
+ "1747180:BarnNoFwSCGQtnNGH-o08w": 531522970,
+ "1747180:O304PG2lSOuef7JzFoSaow": 531523119
+}
diff --git a/testing/test/data/suggest-531522970.json b/testing/test/data/suggest-531522970.json
@@ -0,0 +1,39 @@
+[
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1962169,
+ "internal_id": 1956467,
+ "keywords": "intermittent-failure,regression,test-verify-fail",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent accessible/tests/browser/events/browser_focus_document.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 17,
+ "failure_new_in_rev": false,
+ "line_number": 4027,
+ "path_end": "accessible/tests/browser/events/browser_focus_document.js",
+ "search": "TEST-UNEXPECTED-FAIL | accessible/tests/browser/events/browser_focus_document.js | IME should be enabled - 0 == 1 - got 0, expected 1 (operator ==)",
+ "search_terms": ["browser_focus_document.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": []
+ },
+ "counter": 0,
+ "failure_new_in_rev": false,
+ "line_number": 7088,
+ "path_end": null,
+ "search": "[taskcluster:error] <nil>",
+ "search_terms": ["[taskcluster:error] <nil>"]
+ }
+]
diff --git a/testing/test/data/suggest-531522979.json b/testing/test/data/suggest-531522979.json
@@ -0,0 +1,214 @@
+[
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1699069,
+ "internal_id": 1958097,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | Test timed out -",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1992802,
+ "internal_id": 1967959,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Perma [tier 2] browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1712870,
+ "internal_id": 1957345,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | application terminated with exit code 1",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1775602,
+ "internal_id": 1775602,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 242,
+ "failure_new_in_rev": false,
+ "line_number": 1596,
+ "path_end": "browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | Uncaught exception in test bound test_with_newtabpage_disabled - at chrome://mochitests/content/browser/browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js:258 - TypeError: can't access property \"firstElementChild\", content.document.body is null",
+ "search_terms": ["browser_aboutNewTab_bookmarksToolbar.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1699069,
+ "internal_id": 1958097,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | Test timed out -",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1992802,
+ "internal_id": 1967959,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Perma [tier 2] browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": 1775602,
+ "id": 1712870,
+ "internal_id": 1957345,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | application terminated with exit code 1",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1775602,
+ "internal_id": 1775602,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 242,
+ "failure_new_in_rev": false,
+ "line_number": 1620,
+ "path_end": "browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/about/browser_aboutNewTab_bookmarksToolbar.js | Found an unexpected tab at the end of test run: about:newtab -",
+ "search_terms": ["browser_aboutNewTab_bookmarksToolbar.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": 1877642,
+ "id": 1784875,
+ "internal_id": 1959044,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent dom/html/test/browser_fullscreen-tab-close-race.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1877642,
+ "internal_id": 1877642,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ }
+ ]
+ },
+ "counter": 41,
+ "failure_new_in_rev": false,
+ "line_number": 8678,
+ "path_end": "dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js",
+ "search": "TEST-UNEXPECTED-FAIL | dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js | Test timed out -",
+ "search_terms": ["browser_fullscreen-tab-close-race.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": 1877642,
+ "id": 1784875,
+ "internal_id": 1959044,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "DUPLICATE",
+ "status": "RESOLVED",
+ "summary": "Intermittent dom/html/test/browser_fullscreen-tab-close-race.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1877642,
+ "internal_id": 1877642,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ }
+ ]
+ },
+ "counter": 41,
+ "failure_new_in_rev": false,
+ "line_number": 8698,
+ "path_end": "dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js",
+ "search": "TEST-UNEXPECTED-FAIL | dom/base/test/fullscreen/browser_fullscreen-tab-close-race.js | Application shut down (without crashing) in the middle of a test!",
+ "search_terms": ["browser_fullscreen-tab-close-race.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": []
+ },
+ "counter": 0,
+ "failure_new_in_rev": false,
+ "line_number": 14877,
+ "path_end": null,
+ "search": "[taskcluster:error] <nil>",
+ "search_terms": ["[taskcluster:error] <nil>"]
+ }
+]
diff --git a/testing/test/data/suggest-531523119.json b/testing/test/data/suggest-531523119.json
@@ -0,0 +1,1170 @@
+[
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1569205,
+ "internal_id": 1569205,
+ "keywords": "intermittent-failure,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | Test timed out -",
+ "whiteboard": "[test isolation][stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1942074,
+ "internal_id": 1942074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1976181,
+ "internal_id": 1961922,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1912894,
+ "internal_id": 1912894,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1923548,
+ "internal_id": 1923548,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 848943,
+ "internal_id": 848943,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "FIXED",
+ "status": "RESOLVED",
+ "summary": "Frequent components/search/test/browser_contextmenu.js | Check context menu label - Got Search Google for \"open-suse.ru)\", expected Search Foo for \"test search\" | Checking context menu search URL - Got http://mochi.test:8888/browser/browser/comp...",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1812010,
+ "internal_id": 1812010,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "WORKSFORME",
+ "status": "RESOLVED",
+ "summary": "Intermittent comm/mail/components/im/test/browser/browser_contextMenu.js | [\"Component not initialized\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"resource:///modules/imCore.sys.mjs :: getProtocolById :: line 365\"]",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1853186,
+ "internal_id": 1853186,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/contextMenu/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1992053,
+ "internal_id": 1937944,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1965881,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967450,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967453,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1959755,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent TV TinderboxPrint: Per-test run of .../tests/browser_contextMenu.js<br/>: FAILURE",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1964931,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/viewsource/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960788,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 513558,
+ "internal_id": 1967408,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent linux browser/base/content/test/contextMenu/browser_contextmenu.js | \"checking item #10 (context-selectall) enabled state - got false, expected true\" and many similar failures",
+ "whiteboard": "[stockwell disabled][test disabled on linux: comment 822]"
+ }
+ ]
+ },
+ "counter": 9,
+ "failure_new_in_rev": false,
+ "line_number": 1575,
+ "path_end": "browser/base/content/test/contextMenu/browser_contextmenu.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #10 (context-viewsource) name - Got \"context-ask-chat\", expected \"context-viewsource\"",
+ "search_terms": ["browser_contextmenu.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1569205,
+ "internal_id": 1569205,
+ "keywords": "intermittent-failure,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | Test timed out -",
+ "whiteboard": "[test isolation][stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1942074,
+ "internal_id": 1942074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1976181,
+ "internal_id": 1961922,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1912894,
+ "internal_id": 1912894,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1923548,
+ "internal_id": 1923548,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 848943,
+ "internal_id": 848943,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "FIXED",
+ "status": "RESOLVED",
+ "summary": "Frequent components/search/test/browser_contextmenu.js | Check context menu label - Got Search Google for \"open-suse.ru)\", expected Search Foo for \"test search\" | Checking context menu search URL - Got http://mochi.test:8888/browser/browser/comp...",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1812010,
+ "internal_id": 1812010,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "WORKSFORME",
+ "status": "RESOLVED",
+ "summary": "Intermittent comm/mail/components/im/test/browser/browser_contextMenu.js | [\"Component not initialized\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"resource:///modules/imCore.sys.mjs :: getProtocolById :: line 365\"]",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1853186,
+ "internal_id": 1853186,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/contextMenu/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1992053,
+ "internal_id": 1937944,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1965881,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967450,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967453,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1959755,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent TV TinderboxPrint: Per-test run of .../tests/browser_contextMenu.js<br/>: FAILURE",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1964931,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/viewsource/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960788,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 513558,
+ "internal_id": 1967408,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent linux browser/base/content/test/contextMenu/browser_contextmenu.js | \"checking item #10 (context-selectall) enabled state - got false, expected true\" and many similar failures",
+ "whiteboard": "[stockwell disabled][test disabled on linux: comment 822]"
+ }
+ ]
+ },
+ "counter": 9,
+ "failure_new_in_rev": false,
+ "line_number": 1590,
+ "path_end": "browser/base/content/test/contextMenu/browser_contextmenu.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #11 (context-inspect-a11y) name - Got \"\", expected \"context-inspect-a11y\"",
+ "search_terms": ["browser_contextmenu.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1569205,
+ "internal_id": 1569205,
+ "keywords": "intermittent-failure,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | Test timed out -",
+ "whiteboard": "[test isolation][stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1942074,
+ "internal_id": 1942074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1976181,
+ "internal_id": 1961922,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1912894,
+ "internal_id": 1912894,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1923548,
+ "internal_id": 1923548,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 848943,
+ "internal_id": 848943,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "FIXED",
+ "status": "RESOLVED",
+ "summary": "Frequent components/search/test/browser_contextmenu.js | Check context menu label - Got Search Google for \"open-suse.ru)\", expected Search Foo for \"test search\" | Checking context menu search URL - Got http://mochi.test:8888/browser/browser/comp...",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1812010,
+ "internal_id": 1812010,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "WORKSFORME",
+ "status": "RESOLVED",
+ "summary": "Intermittent comm/mail/components/im/test/browser/browser_contextMenu.js | [\"Component not initialized\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"resource:///modules/imCore.sys.mjs :: getProtocolById :: line 365\"]",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1853186,
+ "internal_id": 1853186,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/contextMenu/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1992053,
+ "internal_id": 1937944,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1965881,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967450,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967453,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1959755,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent TV TinderboxPrint: Per-test run of .../tests/browser_contextMenu.js<br/>: FAILURE",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1964931,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/viewsource/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960788,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 513558,
+ "internal_id": 1967408,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent linux browser/base/content/test/contextMenu/browser_contextmenu.js | \"checking item #10 (context-selectall) enabled state - got false, expected true\" and many similar failures",
+ "whiteboard": "[stockwell disabled][test disabled on linux: comment 822]"
+ }
+ ]
+ },
+ "counter": 9,
+ "failure_new_in_rev": false,
+ "line_number": 1604,
+ "path_end": "browser/base/content/test/contextMenu/browser_contextmenu.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #11 (context-inspect-a11y) enabled state - Got null, expected true",
+ "search_terms": ["browser_contextmenu.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1569205,
+ "internal_id": 1569205,
+ "keywords": "intermittent-failure,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | Test timed out -",
+ "whiteboard": "[test isolation][stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1942074,
+ "internal_id": 1942074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1976181,
+ "internal_id": 1961922,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1912894,
+ "internal_id": 1912894,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1923548,
+ "internal_id": 1923548,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 848943,
+ "internal_id": 848943,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "FIXED",
+ "status": "RESOLVED",
+ "summary": "Frequent components/search/test/browser_contextmenu.js | Check context menu label - Got Search Google for \"open-suse.ru)\", expected Search Foo for \"test search\" | Checking context menu search URL - Got http://mochi.test:8888/browser/browser/comp...",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1812010,
+ "internal_id": 1812010,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "WORKSFORME",
+ "status": "RESOLVED",
+ "summary": "Intermittent comm/mail/components/im/test/browser/browser_contextMenu.js | [\"Component not initialized\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"resource:///modules/imCore.sys.mjs :: getProtocolById :: line 365\"]",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1853186,
+ "internal_id": 1853186,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/contextMenu/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1992053,
+ "internal_id": 1937944,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1965881,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967450,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967453,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1959755,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent TV TinderboxPrint: Per-test run of .../tests/browser_contextMenu.js<br/>: FAILURE",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1964931,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/viewsource/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960788,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 513558,
+ "internal_id": 1967408,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent linux browser/base/content/test/contextMenu/browser_contextmenu.js | \"checking item #10 (context-selectall) enabled state - got false, expected true\" and many similar failures",
+ "whiteboard": "[stockwell disabled][test disabled on linux: comment 822]"
+ }
+ ]
+ },
+ "counter": 6,
+ "failure_new_in_rev": false,
+ "line_number": 1618,
+ "path_end": "browser/base/content/test/contextMenu/browser_contextmenu.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking item #12 (context-inspect) name - Got \"context-viewsource\", expected \"context-inspect\"",
+ "search_terms": ["browser_contextmenu.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1569205,
+ "internal_id": 1569205,
+ "keywords": "intermittent-failure,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | Test timed out -",
+ "whiteboard": "[test isolation][stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1942074,
+ "internal_id": 1942074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1976181,
+ "internal_id": 1961922,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1912894,
+ "internal_id": 1912894,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1923548,
+ "internal_id": 1923548,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 848943,
+ "internal_id": 848943,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "FIXED",
+ "status": "RESOLVED",
+ "summary": "Frequent components/search/test/browser_contextmenu.js | Check context menu label - Got Search Google for \"open-suse.ru)\", expected Search Foo for \"test search\" | Checking context menu search URL - Got http://mochi.test:8888/browser/browser/comp...",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1812010,
+ "internal_id": 1812010,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "WORKSFORME",
+ "status": "RESOLVED",
+ "summary": "Intermittent comm/mail/components/im/test/browser/browser_contextMenu.js | [\"Component not initialized\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"resource:///modules/imCore.sys.mjs :: getProtocolById :: line 365\"]",
+ "whiteboard": ""
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1853186,
+ "internal_id": 1853186,
+ "keywords": "intermittent-failure,intermittent-testcase,leave-open",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent browser/base/content/test/contextMenu/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[stockwell disabled]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1992053,
+ "internal_id": 1937944,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "NEW",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": "[collect_confirm_failure]"
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1965881,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967450,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1967453,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent browser/components/search/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1959755,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent TV TinderboxPrint: Per-test run of .../tests/browser_contextMenu.js<br/>: FAILURE",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1964931,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/viewsource/test/browser/browser_contextmenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960788,
+ "keywords": "",
+ "occurrences": 0,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent toolkit/components/pictureinpicture/tests/browser_contextMenu.js | single tracking bug",
+ "whiteboard": ""
+ },
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 513558,
+ "internal_id": 1967408,
+ "keywords": "intermittent-failure",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent linux browser/base/content/test/contextMenu/browser_contextmenu.js | \"checking item #10 (context-selectall) enabled state - got false, expected true\" and many similar failures",
+ "whiteboard": "[stockwell disabled][test disabled on linux: comment 822]"
+ }
+ ]
+ },
+ "counter": 121,
+ "failure_new_in_rev": false,
+ "line_number": 1633,
+ "path_end": "browser/base/content/test/contextMenu/browser_contextmenu.js",
+ "search": "TEST-UNEXPECTED-FAIL | browser/base/content/test/contextMenu/browser_contextmenu.js | checking expected number of menu entries - Got 30, expected 26",
+ "search_terms": ["browser_contextmenu.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1972397,
+ "internal_id": 1960830,
+ "keywords": "intermittent-failure,intermittent-testcase,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent [tier 2] docshell/test/browser/browser_cross_process_csp_inheritance.js | single tracking bug",
+ "whiteboard": "[confirmed_failure]"
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960803,
+ "keywords": "",
+ "occurrences": 2,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent docshell/test/browser/browser_cross_process_csp_inheritance.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 2,
+ "failure_new_in_rev": false,
+ "line_number": 12562,
+ "path_end": "docshell/test/browser/browser_cross_process_csp_inheritance.js",
+ "search": "TEST-UNEXPECTED-FAIL | docshell/test/browser/browser_cross_process_csp_inheritance.js | Test timed out -",
+ "search_terms": ["browser_cross_process_csp_inheritance.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1972397,
+ "internal_id": 1960830,
+ "keywords": "intermittent-failure,intermittent-testcase,regression",
+ "occurrences": null,
+ "resolution": "INCOMPLETE",
+ "status": "RESOLVED",
+ "summary": "Intermittent [tier 2] docshell/test/browser/browser_cross_process_csp_inheritance.js | single tracking bug",
+ "whiteboard": "[confirmed_failure]"
+ }
+ ],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": null,
+ "internal_id": 1960803,
+ "keywords": "",
+ "occurrences": 2,
+ "resolution": "",
+ "status": "",
+ "summary": "Intermittent docshell/test/browser/browser_cross_process_csp_inheritance.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 2,
+ "failure_new_in_rev": false,
+ "line_number": 12580,
+ "path_end": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "search": "TEST-UNEXPECTED-FAIL | docshell/test/browser/browser_cross_process_csp_inheritance.js | Application shut down (without crashing) in the middle of a test!",
+ "search_terms": ["browser_cross_process_csp_inheritance.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1975818,
+ "internal_id": 1961074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent dom/tests/browser/browser_persist_mixed_content_image.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 8,
+ "failure_new_in_rev": false,
+ "line_number": 16083,
+ "path_end": "dom/tests/browser/browser_persist_mixed_content_image.js",
+ "search": "TEST-UNEXPECTED-FAIL | dom/tests/browser/browser_persist_mixed_content_image.js | Test timed out -",
+ "search_terms": ["browser_persist_mixed_content_image.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": [
+ {
+ "crash_signature": "",
+ "dupe_of": null,
+ "id": 1975818,
+ "internal_id": 1961074,
+ "keywords": "intermittent-failure,intermittent-testcase",
+ "occurrences": null,
+ "resolution": "",
+ "status": "REOPENED",
+ "summary": "Intermittent dom/tests/browser/browser_persist_mixed_content_image.js | single tracking bug",
+ "whiteboard": ""
+ }
+ ]
+ },
+ "counter": 8,
+ "failure_new_in_rev": false,
+ "line_number": 16101,
+ "path_end": "dom/tests/browser/browser_persist_mixed_content_image.js",
+ "search": "TEST-UNEXPECTED-FAIL | dom/tests/browser/browser_persist_mixed_content_image.js | Application shut down (without crashing) in the middle of a test!",
+ "search_terms": ["browser_persist_mixed_content_image.js"]
+ },
+ {
+ "bugs": {
+ "all_others": [],
+ "open_recent": []
+ },
+ "counter": 0,
+ "failure_new_in_rev": false,
+ "line_number": 23022,
+ "path_end": null,
+ "search": "[taskcluster:error] <nil>",
+ "search_terms": ["[taskcluster:error] <nil>"]
+ }
+]
diff --git a/testing/test/data/tasks.json b/testing/test/data/tasks.json
@@ -0,0 +1,567 @@
+[
+ {
+ "duration": 1360945,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "socketprocess_networking"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "BLpDT23eSfO-Xf_NLrMkCA",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 97294,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "test-variant": "socketprocess_networking",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1286734,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "socketprocess_networking"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "KcghbItLQjK-d_-pUH8hXg",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 96267,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "test-variant": "socketprocess_networking",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1245167,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "socketprocess_networking"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "LoJI3MxsQOa4ksZcnjQNsg",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 96251,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "test-variant": "socketprocess_networking",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1264164,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "socketprocess_networking"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "QCOa0hGUQCirGQe7TdXjxQ",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 93095,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "test-variant": "socketprocess_networking",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1246786,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "socketprocess_networking"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_aboutNewTab_bookmarksToolbar.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "f5oEIL1sTR2FAxyJHmEreQ",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 95622,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-spi-nw-7",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "test-variant": "socketprocess_networking",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 330357,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "BarnNoFwSCGQtnNGH-o08w",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 14289,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-a11y",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 344454,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {},
+ "id": "C_XuuTJQR0GSDLSfBpNRAA",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "result": "passed",
+ "results": [
+ {
+ "duration": 14957,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": true
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-a11y",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 349635,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_focus_document.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "IUDOeGXiT6WaMLsq5pVuxw",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 16365,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-a11y",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1218749,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {},
+ "id": "GVQ_K2n_RBejehx1xRFoLQ",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "result": "passed",
+ "results": [
+ {
+ "duration": 103742,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": true
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1249864,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "O304PG2lSOuef7JzFoSaow",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 98405,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ },
+ {
+ "duration": 1212673,
+ "errors": null,
+ "extra": {
+ "arch": "aarch64",
+ "bits": "64",
+ "build": null,
+ "build_type": "opt",
+ "debug": false,
+ "display": null,
+ "opt": true,
+ "os": "mac",
+ "os_version": "15.30",
+ "runtime": "no_variant"
+ },
+ "failure_types": {
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml": [
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "generic"
+ ],
+ [
+ ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser_cross_process_csp_inheritance.js",
+ "generic"
+ ]
+ ]
+ },
+ "id": "bJvpe8XST6u8nvaHgclfdg",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "result": "failed",
+ "results": [
+ {
+ "duration": 98675,
+ "group": ".skip_fails_cache/7cf7a9720f4ead03213f1799f3dcc00a413c7a02/browser.toml",
+ "ok": false
+ }
+ ],
+ "state": "completed",
+ "tags": {
+ "createdForUser": "ci@mozilla.com",
+ "kind": "mochitest",
+ "label": "test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3",
+ "os": "macosx",
+ "project": "try",
+ "retrigger": "true",
+ "test-platform": "macosx1500-aarch64-shippable/opt",
+ "test-suite": "mochitest-browser-chrome",
+ "test-type": "mochitest",
+ "tests_grouped": "1",
+ "trust-domain": "gecko",
+ "worker-implementation": "generic-worker"
+ },
+ "tier": 2
+ }
+]
diff --git a/testing/test/python.toml b/testing/test/python.toml
@@ -4,6 +4,9 @@ subsuite = "skip-fails"
["test_failedplatform.py"]
requirements = "testing/test/test_skipfails.txt"
+["test_modes.py"]
+requirements = "testing/test/test_skipfails.txt"
+
["test_parse_reftest.py"]
requirements = "testing/test/test_skipfails.txt"
diff --git a/testing/test/test_modes.py b/testing/test/test_modes.py
@@ -0,0 +1,235 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import os
+from pathlib import Path
+
+import mozunit
+import pytest
+from manifestparser.toml import Mode
+from skipfails import FAILURE_RATIO, Skipfails, read_json, write_json
+
+DATA_PATH = Path(__file__).with_name("data")
+REVISION: str = "7cf7a9720f4ead03213f1799f3dcc00a413c7a02"
+RETRIEVING = "Retrieving"
+TRY_URL: str = f"https://treeherder.mozilla.org/jobs?repo=try&revision={REVISION}"
+META_BUG_ID: str = "1991977"
+TEXT_FILE = 0
+JSON_FILE = 1
+TASKS_FILE = 1
+
+
+def clear_cache(sf: Skipfails):
+ sf.clear_cache = META_BUG_ID
+ sf.check_cache()
+ sf.clear_cache = REVISION
+ sf.check_cache()
+
+
+def copy_to_cache(skipfails: Skipfails, filename: str, kind: int = JSON_FILE):
+ from_path = DATA_PATH.joinpath(filename)
+ to_path = skipfails.cached_path(REVISION, filename)
+ if kind == TEXT_FILE:
+ with open(from_path) as from_fp, open(to_path, "w") as to_fp:
+ to_fp.write(from_fp.read())
+ elif kind == JSON_FILE:
+ data = read_json(from_path)
+ write_json(to_path, data)
+ else: # TASKS_FILE
+ data = skipfails.read_tasks(from_path)
+ skipfails.write_tasks(to_path, data)
+
+
+def cache_vs_expected(
+ skipfails: Skipfails,
+ to_filename: str,
+ from_filename: str = "",
+ cache_dir: str = REVISION,
+):
+ from_path = DATA_PATH.joinpath(from_filename if from_filename else to_filename)
+ to_path = skipfails.cached_path(cache_dir, to_filename)
+ with open(from_path) as from_fp, open(to_path) as to_fp:
+ from_data = from_fp.read()
+ to_data = to_fp.read()
+ return (to_data, from_data)
+
+
+@pytest.fixture(scope="session")
+def skipfails():
+ sf = Skipfails(
+ None, # command_context
+ TRY_URL,
+ True, # verbose
+ "disable", # bugzilla
+ False, # dry_run
+ False, # turbo
+ False, # implicit_vars
+ None, # new_version
+ None, # task_id
+ None, # user_agent
+ None, # clear_cache
+ )
+ clear_cache(sf)
+ yield sf
+
+
+def test_carryover_mode(skipfails: Skipfails, capsys):
+ "Test --carryover"
+
+ copy_to_cache(skipfails, "tasks.json", TASKS_FILE)
+ copy_to_cache(skipfails, "job_ids.json")
+ copy_to_cache(skipfails, "browser.toml", TEXT_FILE)
+ copy_to_cache(skipfails, "suggest-531522970.json")
+ copy_to_cache(skipfails, "suggest-531522979.json")
+ copy_to_cache(skipfails, "suggest-531523119.json")
+ copy_to_cache(skipfails, "context-O304PG2lSOuef7JzFoSaow-12581.txt", TEXT_FILE)
+ copy_to_cache(skipfails, "context-BarnNoFwSCGQtnNGH-o08w-4028.txt", TEXT_FILE)
+
+ mode: int = Mode.CARRYOVER
+ skipfails.run(
+ META_BUG_ID,
+ None, # save_tasks
+ None, # use_tasks
+ None, # save_failures
+ None, # use_failures
+ -1, # max_failures
+ FAILURE_RATIO, # failure_ratio: float = FAILURE_RATIO,
+ mode,
+ )
+
+ out, err = capsys.readouterr()
+ # save STDERR for debugging (don't clear cache at the end)
+ err_path = skipfails.cached_path(REVISION, "err-carryover.log")
+ with open(err_path, "w") as fp:
+ fp.write(err)
+ mode_string = "Carryover mode: only platform match conditions considered, no bugs created or updated"
+ assert mode_string in err
+ assert RETRIEVING not in err
+
+ failures, failures_expected = cache_vs_expected(skipfails, "failures.json")
+ assert failures == failures_expected
+
+ manifest, manifest_expected = cache_vs_expected(
+ skipfails, "browser.toml", "browser-carryover.toml"
+ )
+ assert manifest == manifest_expected
+
+ actions, actions_expected = cache_vs_expected(
+ skipfails, "actions.json", "actions-carryover.json", META_BUG_ID
+ )
+ assert actions == actions_expected
+
+
+def test_known_intermittents_mode(skipfails: Skipfails, capsys):
+ "Test --known-intermittents"
+
+ mode: int = Mode.KNOWN_INTERMITTENT
+ skipfails.run(
+ META_BUG_ID,
+ None, # save_tasks
+ None, # use_tasks
+ None, # save_failures
+ None, # use_failures
+ -1, # max_failures
+ FAILURE_RATIO, # failure_ratio: float = FAILURE_RATIO,
+ mode,
+ )
+
+ out, err = capsys.readouterr()
+ # save STDERR for debugging (don't clear cache at the end)
+ err_path = skipfails.cached_path(REVISION, "err-known.log")
+ with open(err_path, "w") as fp:
+ fp.write(err)
+ mode_string = "Known Intermittents mode: only failures with known intermittents considered, no bugs created or updated"
+ assert mode_string in err
+ assert RETRIEVING not in err
+
+ manifest, manifest_expected = cache_vs_expected(
+ skipfails, "browser.toml", "browser-known.toml"
+ )
+ assert manifest == manifest_expected
+
+ actions, actions_expected = cache_vs_expected(
+ skipfails, "actions.json", "actions-known.json", META_BUG_ID
+ )
+ assert actions == actions_expected
+
+
+def test_new_failures_mode(skipfails: Skipfails, capsys):
+ "Test --new-failures"
+
+ mode: int = Mode.NEW_FAILURE
+ skipfails.run(
+ META_BUG_ID,
+ None, # save_tasks
+ None, # use_tasks
+ None, # save_failures
+ None, # use_failures
+ -1, # max_failures
+ FAILURE_RATIO, # failure_ratio: float = FAILURE_RATIO,
+ mode,
+ )
+
+ out, err = capsys.readouterr()
+ # save STDERR for debugging (don't clear cache at the end)
+ err_path = skipfails.cached_path(REVISION, "err-new.log")
+ with open(err_path, "w") as fp:
+ fp.write(err)
+ mode_string = "New failures mode: Will only edit manifest skip-if conditions for new failures (i.e. not carryover nor known intermittents)"
+ assert mode_string in err
+ assert RETRIEVING not in err
+
+ manifest, manifest_expected = cache_vs_expected(
+ skipfails, "browser.toml", "browser-new.toml"
+ )
+ assert manifest == manifest_expected
+
+ actions, actions_expected = cache_vs_expected(
+ skipfails, "actions.json", "actions-new.json", META_BUG_ID
+ )
+ assert actions == actions_expected
+
+
+def test_replace_tbd_mode(skipfails: Skipfails, capsys):
+ "Test --replace-tbd"
+
+ mode: int = Mode.REPLACE_TBD
+ skipfails.run(
+ META_BUG_ID,
+ None, # save_tasks
+ None, # use_tasks
+ None, # save_failures
+ None, # use_failures
+ -1, # max_failures
+ FAILURE_RATIO, # failure_ratio: float = FAILURE_RATIO,
+ mode,
+ )
+
+ out, err = capsys.readouterr()
+ # save STDERR for debugging (don't clear cache at the end)
+ err_path = skipfails.cached_path(REVISION, "err-replace.log")
+ with open(err_path, "w") as fp:
+ fp.write(err)
+ mode_string = "Replace TBD mode: Will only edit manifest skip-if conditions for new failures by filing new bugs and replacing TBD with actual bug number."
+ assert mode_string in err
+ assert RETRIEVING not in err
+
+ carryover = "Bugzilla has been disabled: comment not added to Bug 1111111"
+ assert carryover in err
+
+ intermittent = "Error log line 4028: https://treeherder.mozilla.org/logviewer?repo=try&job_id=531522970&lineNumber=4028"
+ assert intermittent in err
+
+ new = "Error log line 12581: https://treeherder.mozilla.org/logviewer?repo=try&job_id=531523119&lineNumber=12581"
+ assert new in err
+
+
+def test_cleanup(skipfails: Skipfails):
+ clear_cache(skipfails)
+ tasks_cached = skipfails.cached_path(REVISION, "tasks.json")
+ assert not os.path.exists(tasks_cached)
+
+
+if __name__ == "__main__":
+ mozunit.main()
diff --git a/testing/test/test_skipfails.py b/testing/test/test_skipfails.py
@@ -8,11 +8,38 @@ from pathlib import Path
import pytest
from mozunit import main
-from skipfails import Kind, Skipfails, read_json
+from skipfails import Kind, Skipfails, SkipfailsMode, read_json
DATA_PATH = Path(__file__).with_name("data")
+def test_from_flags():
+ carryover_mode: bool = True
+ known_intermittents_mode: bool = True
+ new_failures_mode: bool = True
+ replace_tbd_mode: bool = True
+ mode: int = 10
+ with pytest.raises(Exception) as e:
+ mode = SkipfailsMode.from_flags(
+ carryover_mode,
+ known_intermittents_mode,
+ new_failures_mode,
+ replace_tbd_mode,
+ )
+ assert (
+ str(e.value)
+ == "may not specifiy more than one mode: --carryover --known-intermittents --new-failures --replace-tbd"
+ )
+
+ carryover_mode = False
+ known_intermittents_mode = False
+ new_failures_mode = False
+ mode = SkipfailsMode.from_flags(
+ carryover_mode, known_intermittents_mode, new_failures_mode, replace_tbd_mode
+ )
+ assert mode == SkipfailsMode.REPLACE_TBD
+
+
def test_get_revision():
"""Test get_revision"""