Optimise WikiPage spec
What does this MR do?
This MR optimises WikiPage
spec which was flagged as a slow test #229654 (closed).
Optimisations
Locally the spec has reduced from ~45s
to ~14s
.
We used to spend ~35s
creating factories, and we now spend ~3s
doing this.
Before
[TEST PROF INFO] Factories usage
Total: 416
Total top-level: 207
Total time: 35.2881s
Total uniq factories: 6
total top-level total time time per call top-level time name
132 113 29.1420s 0.2208s 25.1820s project
132 0 5.5594s 0.0421s 0.0000s namespace
92 92 9.8735s 0.1073s 9.8735s wiki_page
30 1 1.3980s 0.0466s 0.2216s user
29 0 1.1805s 0.0407s 0.0000s wiki
1 1 0.0110s 0.0110s 0.0110s license
After
[TEST PROF INFO] Factories usage
Total: 116
Total top-level: 99
Total time: 3.1782s
Total uniq factories: 6
total top-level total time time per call top-level time name
95 84 0.0227s 0.0002s 0.0205s wiki
11 11 1.0874s 0.0989s 1.0874s wiki_page
4 2 1.7510s 0.4377s 1.2710s project
4 0 0.1755s 0.0439s 0.0000s namespace
1 1 0.0164s 0.0164s 0.0164s license
1 1 0.7830s 0.7830s 0.7830s user
Considerations
Previously, we were creating a new project
for each test, which had the benefit of starting each test with a blank wiki repository. The change to persist the project
between tests means we reuse the same wiki repository.
In order to make this safer for this test, I've removed the top-level existing_page
let
(used for tests of saved wiki pages) as we don't want to encourage the risk of tests modifying data that can persist between groups of tests.
Wiki pages need to have unique title
s, and the factory will create a unique title if none is supplied. For tests that rely on specific titles in the test, I've modified these to use a different title for each test (previously they were all test page
).
Does this MR meet the acceptance criteria?
Conformity
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides - [-] Database guides
- [-] Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
- [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done