Skip to main content

Package providing common functionality for UI automation test packs

Project description

UiTestCore

This package helps with writing UI tests by providing a wrapper around Selenium and other useful functions. UiTestCore was designed with Page Object Model in mind, and makes it easy to create an acceptance test pack without the need to write any Selenium code.

The repository for this project can be found on GitHub: https://github.com/nhsuk/ui-test-core

Example

The below example shows how you can create a class representing a web page, in this case a login page.

from uitestcore.page import BasePage
from uitestcore.page_element import PageElement
from selenium.webdriver.common.by import By


class MyLoginPage(BasePage):

    # Define elements to interact with
    header_logo = PageElement(By.ID, "company-logo")
    username_field = PageElement(By.ID, "input-user")
    password_field = PageElement(By.CLASS_NAME, "field-password")
    login_button = PageElement(By.XPATH, "//button[text()='Login']")

    def open_login_page(self):
        self.interact.open_url("https://mysite.com/login")
        self.wait.for_page_to_load()

    def logo_visible(self):
        return self.interrogate.is_element_visible(self.header_logo)

    def enter_username(self, username):
        self.interact.enter_text(self.username_field, username)

    def enter_password(self, password):
        self.interact.enter_text(self.password_field, password)

    def click_login_button(self):
        self.interact.click_element(self.login_button)

The "BasePage" class is provided so that any page classes in the test pack can inherit from it, giving access to many useful functions which are separated into "find", "interrogate", "interact" and "wait". The "PageElement" class is used to define any elements which your tests need to interact with, so they can be reused without needing to remember whether you're looking for a class, ID etc (all Selenium selector types are supported).

The above page class could then be used in the test steps to perform any required actions and assertions. You must supply a selenium.webdriver driver object when instantiating the page

    login_page = MyLoginPage(driver)
    login_page.open_login_page()

Installation

This package is located on PyPI: https://pypi.org/project/uitestcore/ - it can be installed in the usual way i.e. pip install uitestcore

The easiest way to include this package in your project is by adding it to your requirements.txt. Here is an example of the line which should be added to this file, we recommend using a specific version but it's your call:

uitestcore==3.3.0

Deployment to PyPI

PyPI deployment is configured in the release pipeline of the NHS.UK Azure Devops project. Any changes merged into master will be automatically deployed to PyPI, and any changes pushed to a branch starting with "test/" will be automatically deployed to TestPyPI.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Dependencies

The package dependencies along with links to their licenses are as follows:

certifi - http://mozilla.org/MPL/2.0/
chardet - https://github.com/chardet/chardet/blob/master/LICENSE
idna - https://github.com/kjd/idna/blob/master/LICENSE.rst
pyhamcrest - https://github.com/hamcrest/PyHamcrest/blob/master/LICENSE.txt
python-dateutil - https://github.com/pganssle/dateutil/blob/master/LICENSE
requests - https://github.com/psf/requests/blob/master/LICENSE
selenium - https://github.com/SeleniumHQ/selenium/blob/master/LICENSE
six - https://github.com/benjaminp/six/blob/master/LICENSE
urllib3 - https://github.com/urllib3/urllib3/blob/master/LICENSE.txt

Contribute

Read our contributing guidelines to contribute to UiTestCore.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uitestcore-6.0.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uitestcore-6.0.0-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file uitestcore-6.0.0.tar.gz.

File metadata

  • Download URL: uitestcore-6.0.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for uitestcore-6.0.0.tar.gz
Algorithm Hash digest
SHA256 066936babfd4ec6b6c6d67b4543154d43ee17f0d503e9ddb256b196e85206797
MD5 8330dc18c892882bb22a39302be7bd4a
BLAKE2b-256 4ed88950bbd30bd741ffc0c5195e7a645794bb5e482974417b96abd6e2cde72f

See more details on using hashes here.

File details

Details for the file uitestcore-6.0.0-py3-none-any.whl.

File metadata

  • Download URL: uitestcore-6.0.0-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for uitestcore-6.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be3a9dd3f0ec961b680f016ecf7b39330418b354282faed75585c3def937db19
MD5 3458429608a1cc4b0c9f7333d80b35ab
BLAKE2b-256 e49ac3b6667ce971883becc0fc1e3d7d79d1d71e7affd6c71bb7fd7546d47fd6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page