From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- accessible/tests/browser/atk/a11y_setup.py | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 accessible/tests/browser/atk/a11y_setup.py (limited to 'accessible/tests/browser/atk/a11y_setup.py') diff --git a/accessible/tests/browser/atk/a11y_setup.py b/accessible/tests/browser/atk/a11y_setup.py new file mode 100644 index 0000000000..c5fe3481ff --- /dev/null +++ b/accessible/tests/browser/atk/a11y_setup.py @@ -0,0 +1,64 @@ +# 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/. + +"""Python environment for ATK a11y browser tests. +""" + +import os +import subprocess +import sys + +import psutil + +# pyatspi can't be installed using pip. Rely on the system installation. +# Get the path to the system installation of pyatspi. +pyatspiFile = subprocess.check_output( + ( + os.path.join(sys.base_prefix, "bin", "python3"), + "-c", + "import pyatspi; print(pyatspi.__file__)", + ), + encoding="utf-8", +).rstrip() +sys.path.append(os.path.dirname(os.path.dirname(pyatspiFile))) +import pyatspi + +sys.path.pop() +del pyatspiFile + + +def getDoc(): + """Get the Accessible for the document being tested.""" + # We can compare the parent process ids to find the Firefox started by the + # test harness. + commonPid = psutil.Process().ppid() + for app in pyatspi.Registry.getDesktop(0): + if ( + app.name == "Firefox" + and psutil.Process(app.get_process_id()).ppid() == commonPid + ): + break + else: + raise LookupError("Couldn't find Firefox application Accessible") + root = app[0] + for embeds in root.getRelationSet(): + if embeds.getRelationType() == pyatspi.RELATION_EMBEDS: + break + else: + raise LookupError("Firefox root doesn't have RELATION_EMBEDS") + doc = embeds.getTarget(0) + child = doc[0] + if child.get_attributes().get("id") == "default-iframe-id": + # This is an iframe or remoteIframe test. + doc = child[0] + return doc + + +def findByDomId(root, id): + for child in root: + if child.get_attributes().get("id") == id: + return child + descendant = findByDomId(child, id) + if descendant: + return descendant -- cgit v1.2.3