August 2024
For context, see the annex https://lawmaker.atlassian.net/wiki/spaces/RTS/pages/edit-v2/526581768#Annex---Overview-of-testing-and-development-processes which explains how we approach testing of Lawmaker.
Summary of testing
Version 17 includes several new features and a number of bug fixes: see the release note for details What's new in version 17?
Each new feature and bug fix has been tested to ensure that is works as expected and does not adversely impact any existing Lawmaker functionality. In addition general regression testing has been carried out.
Tests were performed using a combination of newly created documents, documents imported from legislation.gov.uk, and existing real-world documents copied from the Production environment.
To test UK Bills functionality, we used in particular the Leasehold and Freehold Reform Bill, Renters' Reform Bill, and Digital Markets, Competition and Consumers Bill, along with the corresponding tabled amendments to those bills. Version 17 introduces a new feature which makes it possible to download and upload large lists of amendments to a bill version for testing; we made use of this new feature to perform tests on those bills using large numbers of real-world amendments.
We also imported UK Act content from legislation.gov.uk to test performance on large documents, including the Energy Act 2023 and Online Safety Act 2023.
Issues found during testing
We identified a bug which prevented images displaying in the Editor. This has been fixed in the final version 17 build.
We identified an existing bug with ‘remove reference tag’ function which also could cause problems with the updated ‘tag references’ function. The issue affected some references in documents containing line numbering mark-up. This has been fixed in the final version 17 build.
We observed that the automatic reference tagging function sometimes added additional reference tags around existing references; that has been fixed in the final build.
See below for more information on the specific testing outcomes related to new features and bug fixes in version 17.
Regression tests performed
End-to-end tests
The following end-to-end regression scripts and specfic feature scripts were run through by the Lawmaker team:
Script | Test result | Notes |
---|---|---|
UK Bill Test Script | Pass | |
UK Amendments Test Script - | Pass | |
UK Ping Pong test script | Pass | |
Editor Test Matrix script | Pass | Issue identified with the display of images in the Editor. Fixed in the final candidate build. |
Scottish Bill test script | Pass | |
Scottish Amendments test script | Pass |
Additional UK Bill and Amendment testing
In addition to the general regression scripts, additional testing was carried out of UK Bill functionality using real data from previous sessions. This focused particularly on the auto-apply amendment functionality and ensuring that no regressions had been introduced by comparing the output of the auto-apply feature in the new version of Lawmaker with the output from the current version of Lawmaker.
Bill title | Amendments tested | Notes |
---|---|---|
Renters Reform (HoC, As Introduced) | 170 OPC amendments | Auto-apply outputs from Production compared with Staging; no differences found |
Digital Markets, Competition and Consumers (HoL, As Brought from the Commons) | 50 amendments tested | Auto-apply outputs from Production compared with Staging; no differences found |
Leasehold and Freehold Reform (HoC, As Introduced) | 124 amendments tested | Auto-apply outputs from Production compared with Staging; no differences found |
PDF testing
PDFs were generated for a range of real and test documents and the outputs compared to PDFs generated with the current version of Lawmaker to identify and issues.
No issues were found.
New and improved feature testing
Automatic tagging of references
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4272 | Pass | Extend XML markup generation to add <mref> around reference groups | |
LDAPP-4372 | Pass | Allow users to create manual cross-references from provisions in the Editor | |
LDAPP-4459 | Pass | Update tag x-ref behaviour to account for existing unmodified refs | |
LDAPP-4460 | Pass | Update tag x-ref behaviour to handle manual refs | Identified and fixed issues relating to:
|
LDAPP-4455 | Pass | Change presentation in Editor of valid internal and external x-refs | |
LDAPP-4427 | Pass | Tag document alias references | |
LDAPP-4417 | Pass | Extend //mref markup to internal references when manually generating x-refs (from the Structure View or Context Menu) | |
LDAPP-4380 | Pass | Handle ephemeral block context outside of amending provisions | |
LDAPP-4378 | Pass | Ignore X-refs in quoted text and in parenthetical descriptions | |
LDAPP-4375 | Pass | Improve behaviour of contextual references | |
LDAPP-4366 | Pass | Tag references inside quoted structures and quoted text | |
LDAPP-4365 | Pass | X-refs not tagged in text preceding quoted structures with following text | |
LDAPP-4364 | Pass | Stop //ref elements being editable directly in the Editor | |
LDAPP-4356 | Pass | Update all the "x-ref"/"x-refs" titles to "reference"/"references" | |
LDAPP-4343 | Pass | Prevent inline elements (and PIs) from breaking X-refs | Identified and fixed a related issue where re-tagging or removing the reference tags from a reference in a document containing line numbering sometimes resulted in the reference text disappearing. |
LDAPP-4276 | Pass | Handle isolated external provision references | |
LDAPP-4273 | Pass | Identify and mark up document alias definitions | |
LDAPP-4258 | Pass | Convert hybrid ID of external provision references to http://legislation.gov.uk URLs | |
LDAPP-4419 | Pass | Line number missing when ref with @ukl:alternativeReference attribute spans multiple lines |
Version 17 includes a number of significant improvements to the automatic Tag x-refs function. This function will now identify both internal cross-references and external references to existing legislation, and tag them.
Our testing focused on the new behaviour of the automatic tagging function in a variety of document types, using real-world test data.
Documents containing the newly tagged references were then used in end-to-end tests, to ensure that existing Lawmaker functionality is unaffected by the refinements to the automatic tagging function and the tags generated by that function. We did not identify any issues relating to the interaction of core Lawmaker functions and references as part of our end-to-end tests.
Referencing toolbar and the Edit ref modal
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4353 | Pass | Edit existing cross-references via modal (simplified) | |
LDAPP-4333 | Pass | Jump to x-ref target from Editor | |
LDAPP-4478 | Pass | Handle manual references - UI |
We tested the newly expanded referencing toolbar (which appears when double-clicking on a reference in the Editor) in all document types. We checked for potential user interface problems connected to the expanded toolbar, and we checked that initiating actions from the toolbar produced the same result as initiating those actions from the right-click menu.
We checked that the new reference toolbar had no effect on the performance of the Editor when opening larger documents.
User testing on Staging helped us to identify an issue with the appearance and layout of the ‘Edit ref’ modal on smaller screens. We intend to fix this in the next minor Lawmaker release.
Generation of citation footnotes in SIs
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4241 | Pass | Investigate and design auto-generation of citation footnotes | |
LDAPP-4385 | Pass | Generate amending statements | |
LDAPP-4389 | Pass | Retrieve amending infomation for rrefs | |
LDAPP-4388 | Pass | UI - Insert a footnote for an individual reference or group of references | |
LDAPP-4386 | Pass | Merge amending statements into a single citation footnote | |
LDAPP-4446 | Pass | Handle edge cases in parsing textual amendments with malformed amended provisions | |
LDAPP-4472 | Pass | Fix capitalisation of provisions and presentation of SI titles in citation footnotes |
Version 17 gives users the ability to automatically generate citation footnotes in SIs. We checked the content and format of these auto-generated footnotes using a large number of real SI documents imported from legislation.gov.uk.
Improved sorting of amendments on the Amendment Manager tab
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4448 | Pass | Rework OoC sort function so it sorts amendments correctly - Back End | |
LDAPP-4410 | Pass | Rework OoC sort function so it sorts amendments correctly - Front End |
Version 17 replaces the ‘OoC Sort’ button on the Amendment Manager tab with a ‘Sort by Marshalled Order’ button that correctly sorts amendments in the table according to the order in which they will appear in official lists. We tested the new sorting using Commons, Lords, and Scottish Parliament amendments, and ensured that the ordering logic was correct. We also tested using large numbers of real amendments imported from the Production environment.
Quoted text
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4404 | Pass | Inserting Quoted Text in Editor and CSS | |
LDAPP-4405 | Pass | Changing quote marks in Quoted Text via modal | |
LDAPP-4432 | Pass | Adjust Quoted Text formatting | |
LDAPP-4407 | Pass | Handling Quoted Text in PDFs | |
LDAPP-4457 | Pass | Allow insertion of a Quoted Structure when cursor is in a Quoted Text element | |
LDAPP-4433 | Pass | Fix duplicate //mod issue when inserting a Quoted Text or Quoted Structure outside a //mod | |
LDAPP-4453 | Pass | Quoted text causes line numbering to skip when appearing first on subsequent lines |
We tested adding Quoted Text elements in UK Bills, Scottish Bills, and SIs. We checked that existing Editor functions continued to work in documents containing these elements. We checked that PDF rendering and line numbering continued to work correctly in provisions which contained Quoted Text elements.
Church Measures
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-321 | Pass | Create a new Church Measure project | |
LDAPP-3087 | Pass | Church Measure template | |
LDAPP-4458 | Pass | Church Measure XML/PDF - Refactoring hardcoded 'HL Paper' and 'HC' texts on the front cover | |
LDAPP-3089 | Pass | Convert Church Measure to enacted | |
LDAPP-4438 | Pass | Add Church Measure doctype to Insert Quoted Structure and Update Quoted Structure modals | |
LDAPP-4413 | Pass | Modify Document Information fields for Church Measures | |
SPT-1631 | Pass | Incorrect Document Push in Copy Provisions Operation | |
LDAPP-3088 | Pass | Modify "Insert front cover" and "Insert back cover" functions (and "Finalise version" modal) for Church Measures | |
LDAPP-411 | Pass | Generate a PDF of a Church Measure with correct styling, and display Church Measures in the Editor with correct styling | |
LDAPP-4466 | Pass | Submit enacted Measure to TNA | |
LDAPP-4465 | Pass | Enable Push/Pull and Insert/Update Origin Information functions for Church Measures |
Version 17 adds supports for Church Measures documents. We tested the core Lawmaker functions in the Editor and on the Project tab for Church Measures projects to ensure that users can draft and manage Measures in Lawmaker.
User testing enabled us to identify some features which were not enabled for Church Measures (including the push/pull function and the ‘Submit to TNA’ action for enacted Measures). We worked with the development team to enable and test those features for Measures, and have included the necessary changes in the final version 17 release.
Uploading amendment list XML to create new amendments
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4441 | Pass | Upload amendment list XML - backend | |
LDAPP-4399 | Pass | Upload amendment list XML - front-end |
Editing fragments of a schedule
Ticket reference | Testing result | Description | Notes |
---|---|---|---|
LDAPP-4373 | Pass | Implement fragmentation below the Schedule level | |
LDAPP-4397 | Pass | Update structure view to show fragments in schedules |
Bug fix testing
The following bug fixes in version 17 were tested
SI/SSIs
Issue key | Summary | Test result |
---|---|---|
SPT-1703 | Error when copying an SI to another project when SI doesn't have enacting text | Pass |
SPT-1700 | Smart paste of SI prov1 with auto-renumber ON strips trailing full stop from num | Pass |
SPT-1695 | Updated SI subject heading list | Pass |
SPT-1689 | SI Paragraph (1) spacing differs in quoted structure as starting element | Pass |
SPT-1679 | Specific wordings of SI/SSI dates still causes line break | Pass |
SPT-1676 | Procedure of SI on the Project tab or Dashboard is locked in after creation and unchangeable | Pass |
SPT-1671 | Add OFGEM and OFCOM as new organisations | Pass |
Editor
Issue key | Summary | Test result |
---|---|---|
SPT-1713 | Editor fails to revert to using the correct document filter after an unknown action in the editor results in a failure to switch back to the LDAPPDocumentFilter | Pass |
SPT-1690 | Wrong placement of material dragged into containers in amendment QSs | Pass |
SPT-1711 | Oxygen sometimes fails to retrieve the XML from the server for operations like auto-save, save and structure view updates | Pass |
SPT-1706 | The "A problem has occurred" modal appears in documents with lots of spelling errors. | Pass |
SPT-1702 | Performance issue in getElementByGuid(Oxygen client-side code) (included in patch release 16.2.1) | Pass |
SPT-1701 | TNA - Screen Jumps On Paste | Pass |
SPT-1699 | Poor performance when copying a reasonable number of provisions (included in patch release 16.2.1) | Pass |
SPT-1683 | Mark as done toggle not working in certain cases | Pass |
SPT-1672 | Issues with rejecting "surround" tracked changes in Oxygen v25.1. | Pass |
SPT-1653 | Updates to document during a renumber operation result in strange document modifications | Pass |
SPT-1656 | Promote/Demote of closing words unwraps inline formatting and footnotes | Pass |
SPT-1631 | Incorrect Document Push in Copy Provisions Operation | Pass |
SPT-1616 | Strange restrictions on using the Structure View to move a Schedule in a version of a bill where a New Schedule amendment has been applied | Pass |
SPT-1611 | Oxygen exceptions occurring when a user accepts tracked change edits ("A problem has occurred") (included in patch release 16.2.1) | Pass |
SPT-1609 | Cross references inside tracked change deletions are re-added without deleted markup after updating cross references in the provision | Pass |
PDFs
Issue key | Summary | Test result |
---|---|---|
SPT-1696 | Quoted structure in change track have incorrect indent | Pass |
SPT-1693 | Text in ukpga quoted structure //section/intro is not justified in PDF | Pass |
SPT-1692 | Page numbering broken from page 10 onwards in Scottish Parliamentary Amendment lists | Pass |
SPT-1691 | Empty paragraph element wrongly aligned in PDF | Pass |
SPT-1682 | Long hyperlinks (URLs) that are split across multiple lines have line spacing issues in the PDF and CSS issues in footnotes in the editor | Pass |
SPT-1558 | Resolve PDF rendering issues caused by missing attributes on quotedStructures (ukl:docName and ukl:indent) | Pass |
Amendments
Issue key | Summary | Test result |
---|---|---|
SPT-1651 | Auto-apply: amendments which leave out words after a Defined term can't be applied if the quotation marks on the defined term are included in the amendment instruction | Pass |
SPT-1646 | Extra spaces appear in certain substituting amendments when auto-applied to a bill version | Pass |
SPT-1633 | Auto-applying amendments to rref elements sometimes results in too much text being included in the rref; original rref's href attributes also persist | Pass |
SPT-1632 | Auto-applied amendment which inserts text beginning with punctuation after a <ref> element adds the text inside the <ref> when accepted | Pass |
SPT-1266 | Side-lining on auto-applied insert section amendment goes down too far | Pass |
SPT-1608 | Moving an amendment in a LoDA using the Structure View with tracked changes turned on results in the amendment being duplicated | Pass |
SPT-1541 | Auto-saved traditional amendments in an inline LoDA cannot be restored into the working version | Pass |
Document management (Project tab, comparison, permissions etc.)
Issue key | Summary | Test result |
---|---|---|
SPT-1662 | Duplicating an 'Auto backup' snapshot results in the wrong XML content being retrieved - later changes are included in the duplicate | Pass |
SPT-1218 | User who first created document still has read-only access when their permissions are removed | Pass |
SPT-1677 | ALL CAPS text is displayed with additional spacing in the Edit Portion dropdown | Pass |
SPT-1648 | Opening an Edit portion document in parallel with others causes issues | Pass |
SPT-1645 | When logging out with two Editor tabs open (one containing a portion of a version), it's not possible to 'Save all changes' in the 'Unsaved changes' modal | Pass |
SPT-1665 | Comparison output moves opening words into the wrong position on Scottish Bill | Pass |
SPT-1657 | XML comparison functionality doesn't handle processing instructions appropriately | Pass |
SPT-1627 | Incorrect comparison result when an x-ref has been updated within a <mod> | Pass |
Annex - Overview of testing and development processes
This annex outlines how we implement quality control in relation to changes to the Lawmaker application during the development process and as part of the release process.
Testing during the development process
All new features and bug fixes are implemented by a multi-functional development team operating in an agile manner.
To ensure the quality of those changes, we implement the following steps:
The initial developer working on a feature or bug fix will, at the same time as writing the necessary code, write automated tests (“unit tests”) or modify existing ones, that can be run in future to ensure the feature/fix is still working as intended.
A second developer peer reviews the codes changes made by the first developer and the tests, before they are merged into the development environment.
When a change is merged into the development environment, all existing unit tests are run against the updated version to ensure that they still pass. If they don’t then the change will not be merged.
The new feature or fix is then tested by a QA engineer or another developer in the development environment to ensure it works as expected. A member of the Lawmaker service team tests feature/fix to ensure it meets the original specifications/expectations (this is effectively “user acceptance” of the change within the agile cycle).
If an issue is found at any of these stages, either it is passed back to an earlier stage in the process to be resolved or a separate task is created to resolve the issue.
Testing as part of the release process
Before any significant or minor release, a series of additional testing is carried out to ensure the quality of the release. The aim of this testing is to ensure that all new features and fixes work as expected when integrated together and also that no regressions in existing functionality have been introduced.
It is impossible to completely rule out any possibility of a regression being introduced somewhere but the testing aims to ensure that all business critical paths through the application work as expected and any defect introduced has only a minor impact on users.
So far as possible all issues found during release testing will be rectified before the release but work is prioritised as follows:
if an issue affects a business critical paths then it will be fixed and retested before release,
if it otherwise has a non-minor impact on users or could significantly erode user confidence in the robustness of the Lawmaker service then they will be fixed and retested before release,
if it has a minor impact on users or is a pre-existing issue that is not being introduced by the release then it may be recorded in our issue-tracking system and addressed in a later release.
As part of the release process, the following steps are taken to ensure the quality of the release
An updated version of Lawmaker incorporating all changes is deployed to the Staging environment, which (apart from scale) is an exact replica of the Production environment.
Each new feature and bug fix included in the release is re-tested in the Staging environment.
A series of “end-to-end” test scripts are run through to ensure that the business-critical paths through the application work as expected. These scripts cover, in particular:
Drafting and managing a Scottish Bill
Drafting and managing amendments and the amendment process for a Scottish Bill
Drafting and managing a UK Bill
Drafting and managing amendments and the amendment process for a UK Bill
The “ping pong” process for UK Bills
Drafting and submitting an SI/SSI
A series of specific tests on particular areas of Lawmaker functionality are carried out, including:
individual features and functions within the Editor,
PDF generation,
converting inline amendments to traditional amendments, and
automatically applying amendments to a Bill.
Additional ad hoc testing by the Lawmaker Service Team also takes place in relation to any aspect of the application that is considered to be at particular risk of regression as a result of the changes made.
A series of automated load tests are carried out to ensure that the changes made in the new release do not have an impact on the robustness of the application.
Senior users within each user group are notified when the updated version of Lawmaker is deployed to the Staging environment and given the opportunity to view the changes and carry out ad hoc testing if they have capacity. Any feedback received from those users is reviewed and may either feed into further changes before the release (e.g. if a bug is identified) or will be recorded so that it can be addressed in future releases.