generated from NHSDigital/repository-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8a02179
commit 6155975
Showing
1 changed file
with
36 additions
and
97 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,112 +1,51 @@ | ||
# Repository Template | ||
# Immunisation API test automation project | ||
|
||
[![CI/CD Pull Request](https://github.com/nhs-england-tools/repository-template/actions/workflows/cicd-1-pull-request.yaml/badge.svg)](https://github.com/nhs-england-tools/repository-template/actions/workflows/cicd-1-pull-request.yaml) | ||
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=repository-template&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=repository-template) | ||
## Introduction | ||
|
||
Start with an overview or a brief description of what the project is about and what it does. For example - | ||
This is a test automation project to test the manage vaccinations in schools (MAVIS) project. It contains several positive and negative functional as well as regression tests. | ||
|
||
Welcome to our repository template designed to streamline your project setup! This robust template provides a reliable starting point for your new projects, covering an essential tech stack and encouraging best practices in documenting. | ||
It is currently configured to run on the TEST environment. The project utilizes the PyTest framework along with Playwright to manage and execute the tests. | ||
|
||
This repository template aims to foster a user-friendly development environment by ensuring that every included file is concise and adequately self-documented. By adhering to this standard, we can promote increased clarity and maintainability throughout your project's lifecycle. Bundled within this template are resources that pave the way for seamless repository creation. Currently supported technologies are: | ||
## Installation | ||
|
||
- Terraform | ||
- Docker | ||
This test pack requires Python 3.10 installed on the system or greater to run. | ||
|
||
Make use of this repository template to expedite your project setup and enhance your productivity right from the get-go. Enjoy the advantage of having a well-structured, self-documented project that reduces overhead and increases focus on what truly matters - coding! | ||
To execute the tests from your system, please follow the 4 easy steps below: | ||
|
||
## Table of Contents | ||
1. Clone the repo to any local folder | ||
|
||
```console | ||
git clone https://github.com/NHSDigital/manage-vaccinations-in-schools-testing.git | ||
``` | ||
1. Create a virtual environment | ||
|
||
- [Repository Template](#repository-template) | ||
- [Table of Contents](#table-of-contents) | ||
- [Setup](#setup) | ||
- [Prerequisites](#prerequisites) | ||
- [Configuration](#configuration) | ||
- [Usage](#usage) | ||
- [Testing](#testing) | ||
- [Design](#design) | ||
- [Diagrams](#diagrams) | ||
- [Modularity](#modularity) | ||
- [Contributing](#contributing) | ||
- [Contacts](#contacts) | ||
- [Licence](#licence) | ||
```console | ||
python -m venv .venv | ||
``` | ||
1. Install all dependencies | ||
|
||
## Setup | ||
```console | ||
pip install -r requirements.txt | ||
``` | ||
1. Create a .env file. Speak to a team member to get the contents of the .env file. | ||
```console | ||
cp .env.generic .env | ||
``` | ||
|
||
By including preferably a one-liner or if necessary a set of clear CLI instructions we improve user experience. This should be a frictionless installation process that works on various operating systems (macOS, Linux, Windows WSL) and handles all the dependencies. | ||
1. Finally, verify the setup by running a self-test | ||
|
||
Clone the repository | ||
```console | ||
pytest -m smoke | ||
``` | ||
|
||
```shell | ||
git clone https://github.com/nhs-england-tools/repository-template.git | ||
cd nhs-england-tools/repository-template | ||
``` | ||
|
||
### Prerequisites | ||
|
||
The following software packages, or their equivalents, are expected to be installed and configured: | ||
|
||
- [Docker](https://www.docker.com/) container runtime or a compatible tool, e.g. [Podman](https://podman.io/), | ||
- [asdf](https://asdf-vm.com/) version manager, | ||
- [GNU make](https://www.gnu.org/software/make/) 3.82 or later, | ||
- [GNU coreutils](https://www.gnu.org/software/coreutils/) and [GNU binutils](https://www.gnu.org/software/binutils/) may be required to build dependencies like Python, which may need to be compiled during installation. For macOS users, this has been scripted and automated by the `dotfiles` project; please see this [script](https://github.com/nhs-england-tools/dotfiles/blob/main/assets/20-install-base-packages.macos.sh) for details, | ||
- [Python](https://www.python.org/) required to run Git hooks, | ||
- [`jq`](https://jqlang.github.io/jq/) a lightweight and flexible command-line JSON processor. | ||
Once the self test passes, you are good to go. | ||
|
||
> [!NOTE]<br> | ||
> The version of GNU make available by default on macOS is earlier than 3.82. You will need to upgrade it or certain `make` tasks will fail. On macOS, you will need [Homebrew](https://brew.sh/) installed, then to install `make`, like so: | ||
> | ||
> ```shell | ||
> brew install make | ||
> ``` | ||
> | ||
> You will then see instructions to fix your `$PATH` variable to make the newly installed version available. If you are using [dotfiles](https://github.com/nhs-england-tools/dotfiles), this is all done for you. | ||
Tests for individual endpoints can be executed using individual markers. For example: | ||
|
||
### Configuration | ||
Installation and configuration of the toolchain dependencies | ||
```shell | ||
make config | ||
```console | ||
pytest -m regression | ||
``` | ||
## Usage | ||
|
||
After a successful installation, provide an informative example of how this project can be used. Additional code snippets, screenshots and demos work well in this space. You may also link to the other documentation resources, e.g. the [User Guide](./docs/user-guide.md) to demonstrate more use cases and to show more features. | ||
|
||
### Testing | ||
|
||
There are `make` tasks for you to configure to run your tests. Run `make test` to see how they work. You should be able to use the same entry points for local development as in your CI pipeline. | ||
|
||
## Design | ||
|
||
### Diagrams | ||
|
||
The [C4 model](https://c4model.com/) is a simple and intuitive way to create software architecture diagrams that are clear, consistent, scalable and most importantly collaborative. This should result in documenting all the system interfaces, external dependencies and integration points. | ||
|
||
![Repository Template](./docs/diagrams/Repository_Template_GitHub_Generic.png) | ||
|
||
### Modularity | ||
|
||
Most of the projects are built with customisability and extendability in mind. At a minimum, this can be achieved by implementing service level configuration options and settings. The intention of this section is to show how this can be used. If the system processes data, you could mention here for example how the input is prepared for testing - anonymised, synthetic or live data. | ||
|
||
## Contributing | ||
|
||
Describe or link templates on how to raise an issue, feature request or make a contribution to the codebase. Reference the other documentation files, like | ||
|
||
- Environment setup for contribution, i.e. `CONTRIBUTING.md` | ||
- Coding standards, branching, linting, practices for development and testing | ||
- Release process, versioning, changelog | ||
- Backlog, board, roadmap, ways of working | ||
- High-level requirements, guiding principles, decision records, etc. | ||
|
||
## Contacts | ||
|
||
Provide a way to contact the owners of this project. It can be a team, an individual or information on the means of getting in touch via active communication channels, e.g. opening a GitHub discussion, raising an issue, etc. | ||
|
||
## Licence | ||
|
||
> The [LICENCE.md](./LICENCE.md) file will need to be updated with the correct year and owner | ||
Unless stated otherwise, the codebase is released under the MIT License. This covers both the codebase and any sample code in the documentation. | ||
|
||
Any HTML or Markdown documentation is [© Crown Copyright](https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/) and available under the terms of the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). |