summaryrefslogtreecommitdiffstats
path: root/testing/firefox-ui/harness
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /testing/firefox-ui/harness
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/firefox-ui/harness')
-rw-r--r--testing/firefox-ui/harness/MANIFEST.in2
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/__init__.py9
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/arguments/__init__.py7
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/arguments/base.py18
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/cli_functional.py23
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/runners/__init__.py7
-rw-r--r--testing/firefox-ui/harness/firefox_ui_harness/runners/base.py56
-rw-r--r--testing/firefox-ui/harness/requirements.txt4
-rw-r--r--testing/firefox-ui/harness/setup.py52
9 files changed, 178 insertions, 0 deletions
diff --git a/testing/firefox-ui/harness/MANIFEST.in b/testing/firefox-ui/harness/MANIFEST.in
new file mode 100644
index 0000000000..cf628b039c
--- /dev/null
+++ b/testing/firefox-ui/harness/MANIFEST.in
@@ -0,0 +1,2 @@
+exclude MANIFEST.in
+include requirements.txt
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/__init__.py b/testing/firefox-ui/harness/firefox_ui_harness/__init__.py
new file mode 100644
index 0000000000..5479f9b2e3
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/__init__.py
@@ -0,0 +1,9 @@
+# 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/.
+
+from __future__ import absolute_import
+
+__version__ = "1.4.0"
+
+from . import cli_functional
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/arguments/__init__.py b/testing/firefox-ui/harness/firefox_ui_harness/arguments/__init__.py
new file mode 100644
index 0000000000..fb802ee70f
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/arguments/__init__.py
@@ -0,0 +1,7 @@
+# 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/.
+
+from __future__ import absolute_import
+
+from firefox_ui_harness.arguments.base import FirefoxUIArguments
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/arguments/base.py b/testing/firefox-ui/harness/firefox_ui_harness/arguments/base.py
new file mode 100644
index 0000000000..e4c7c9caa4
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/arguments/base.py
@@ -0,0 +1,18 @@
+# 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/.
+
+from __future__ import absolute_import
+from marionette_harness import BaseMarionetteArguments
+
+
+class FirefoxUIBaseArguments(object):
+ name = "Firefox UI Tests"
+ args = []
+
+
+class FirefoxUIArguments(BaseMarionetteArguments):
+ def __init__(self, **kwargs):
+ super(FirefoxUIArguments, self).__init__(**kwargs)
+
+ self.register_argument_container(FirefoxUIBaseArguments())
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/cli_functional.py b/testing/firefox-ui/harness/firefox_ui_harness/cli_functional.py
new file mode 100644
index 0000000000..c193297e56
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/cli_functional.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+# 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/.
+
+from __future__ import absolute_import
+from marionette_harness.runtests import cli as mn_cli
+
+from firefox_ui_harness.arguments import FirefoxUIArguments
+from firefox_ui_harness.runners import FirefoxUITestRunner
+
+
+def cli(args=None):
+ mn_cli(
+ runner_class=FirefoxUITestRunner,
+ parser_class=FirefoxUIArguments,
+ args=args,
+ )
+
+
+if __name__ == "__main__":
+ cli()
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/runners/__init__.py b/testing/firefox-ui/harness/firefox_ui_harness/runners/__init__.py
new file mode 100644
index 0000000000..ade629b770
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/runners/__init__.py
@@ -0,0 +1,7 @@
+# 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/.
+
+from __future__ import absolute_import
+
+from firefox_ui_harness.runners.base import FirefoxUITestRunner
diff --git a/testing/firefox-ui/harness/firefox_ui_harness/runners/base.py b/testing/firefox-ui/harness/firefox_ui_harness/runners/base.py
new file mode 100644
index 0000000000..8d02800f9c
--- /dev/null
+++ b/testing/firefox-ui/harness/firefox_ui_harness/runners/base.py
@@ -0,0 +1,56 @@
+# 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/.
+
+from __future__ import absolute_import
+import os
+import shutil
+import tempfile
+
+import mozfile
+import mozinfo
+
+from marionette_harness import BaseMarionetteTestRunner, MarionetteTestCase
+
+
+class FirefoxUITestRunner(BaseMarionetteTestRunner):
+ def __init__(self, **kwargs):
+ super(FirefoxUITestRunner, self).__init__(**kwargs)
+
+ # select the appropriate GeckoInstance
+ self.app = "fxdesktop"
+
+ # low-noise log messages useful in tests
+ # TODO: should be moved to individual tests once bug 1386810
+ # is fixed
+ moz_log = ""
+ if "MOZ_LOG" in os.environ:
+ moz_log = os.environ["MOZ_LOG"]
+ if len(moz_log) > 0:
+ moz_log += ","
+ moz_log += "UrlClassifierStreamUpdater:1"
+ os.environ["MOZ_LOG"] = moz_log
+
+ self.test_handlers = [MarionetteTestCase]
+
+ def duplicate_application(self, application_folder):
+ """Creates a copy of the specified binary."""
+
+ if self.workspace:
+ target_folder = os.path.join(self.workspace_path, "application.copy")
+ else:
+ target_folder = tempfile.mkdtemp(".application.copy")
+
+ self.logger.info('Creating a copy of the application at "%s".' % target_folder)
+ mozfile.remove(target_folder)
+ shutil.copytree(application_folder, target_folder)
+
+ return target_folder
+
+ def get_application_folder(self, binary):
+ """Returns the directory of the application."""
+ if mozinfo.isMac:
+ end_index = binary.find(".app") + 4
+ return binary[:end_index]
+ else:
+ return os.path.dirname(binary)
diff --git a/testing/firefox-ui/harness/requirements.txt b/testing/firefox-ui/harness/requirements.txt
new file mode 100644
index 0000000000..cfebcb1be5
--- /dev/null
+++ b/testing/firefox-ui/harness/requirements.txt
@@ -0,0 +1,4 @@
+marionette-harness >= 4.0.0
+mozfile >= 1.2
+mozinfo >= 0.8
+mozinstall >= 1.12
diff --git a/testing/firefox-ui/harness/setup.py b/testing/firefox-ui/harness/setup.py
new file mode 100644
index 0000000000..a24b17251a
--- /dev/null
+++ b/testing/firefox-ui/harness/setup.py
@@ -0,0 +1,52 @@
+# 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/.
+
+
+from __future__ import absolute_import
+import os
+import re
+from setuptools import setup, find_packages
+
+THIS_DIR = os.path.dirname(os.path.realpath(__name__))
+
+
+def read(*parts):
+ with open(os.path.join(THIS_DIR, *parts)) as f:
+ return f.read()
+
+
+def get_version():
+ return re.findall(
+ '__version__ = "([\d\.]+)"', read("firefox_ui_harness", "__init__.py"), re.M
+ )[0]
+
+
+long_description = """Custom Marionette runner classes and entry scripts for Firefox Desktop
+specific Marionette tests.
+"""
+
+setup(
+ name="firefox-ui-harness",
+ version=get_version(),
+ description="Firefox UI Harness",
+ long_description=long_description,
+ classifiers=[
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 2 :: Only",
+ ],
+ # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ keywords="mozilla",
+ author="Auto-tools",
+ author_email="tools-marionette@lists.mozilla.org",
+ url="https://wiki.mozilla.org/Auto-tools/Projects/Marionette/Harnesses/FirefoxUI",
+ license="MPL",
+ packages=find_packages(),
+ include_package_data=True,
+ zip_safe=False,
+ install_requires=read("requirements.txt").splitlines(),
+ entry_points="""
+ [console_scripts]
+ firefox-ui-functional = firefox_ui_harness.cli_functional:cli
+ """,
+)