This week we focused on finishing end-to-end testing of our platform. We also made major progress on our report website and implementation of features on the site.

Report Website

This week, we focused on restyling the landing page of our report website as well as advanced on writing the different sections of the report website. We also focused on the legal implications of our software and the different ways in which our system complies to legal requirements.

End to End Testing

Having completed our frontend unit tests and backend API integration tests, we set up our end-to-end testing framework this week. These aim to test the entire system as a whole from a user’s perspective, by programmatically navigating to the site, interacting with it, and asserting that the UI is updated and functions correctly at all times.

We are using Puppeteer, a popular Node.js API to programmatically control Chrome, alongside Jest for these tests.

We tried to use jest-puppeteer but found that the built in option to start a local web-server was limited to starting it once at the beginning for all the tests, but we needed to restart it before every test suite. We ended up doing this by running the npm run start command via Node in our own Test Environment and maintaining a reference to this to kill in the teardown method. However, we found that setting our own global variables (the reference to the server process handle) was incompatible with the way jest-puppeteer injects its own test environment, so ended up configuring the Puppeteer Browser and Page instances ourselves and removing the jest-puppeteer dependency.

After setting up the e2e framework we began on writing the tests. We focused on covering all functionality of our platform to ensure we were confident that there are no bugs and that our platform is fully functional.

We did this by step-by-step going through each use case of our platform and noting what actions these require on our platform. We also focused on testing the security of our platform so tested whether users with limited permissions could access parts of our platform that require more permissions.

We ended up with 9 test suites containing 40 tests altogether, giving us confidence our platform is fully functional:

Documentation

Deployment documentation

This week, we wrote deployment documentation and updated our GitHub README to ensure all the relevant information for the DevOps process is well documented and public — this includes information such as how our GitHub Actions Workflows work for Continuous Integration and Deployment, as well as how the Docker image is published and how to deploy to a server:

User manual

As mentioned in last weeks blog posts we implemented a few user requests, and as these were new features we hade to update our existing user manual, so this week we decided to finalise our user manual.

We went ahead and updated with new explanations of the features:

However once we wrote these we realised it’s a pain to, every time we have to update the user manual, convert the online Word document we used to write the manual and then add it to the code and push it to GitHub.

Instead we have decided to directly link the online Word document to our help tab on the platform. This means every time we and future developers of this platform update the user manual, the updated version is automatically live on the platform. This does create another dependency of Microsoft Word, however our users only use Microsoft products so this is actually a benefit as they will be familiar to the UI and it will feel like part of the rest of the tools they use day to day. The user manual can be found here.

Next steps

Next week we have arranged to have our code review with our client which we will perform over Zoom. This will be a recorded session where we will walkthrough the codebase and GitHub repository to ensure all pertinent details are explained and understood by both parties prior to the code handover at the end of the month.

We will also finalise our report website and its content, as well as finalise all testing efforts for the platform (such as compatibility and accessibility testing).

We hope to make progress on creating videos for the project (three videos of different durations and detail) for publicising and explaining the project and the platform.