-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add spec for functional tests #1541
base: main
Are you sure you want to change the base?
Conversation
Warning Rate limit exceeded@ab-smith has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 29 minutes and 57 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⛔ Files ignored due to path filters (5)
📒 Files selected for processing (107)
WalkthroughA new documentation file, Changes
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
@monsieurswag please rename the folder to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (12)
documentation/functional_testing/architecture.md (12)
2-17
: Clarify Conventions and Fix Typos
This section clearly lays out the testing conventions and the meaning of{REPO_BASE}
. However, several grammatical and typographical issues should be addressed:
- In line 9, “precises what the content represents” is awkward. Consider replacing "precises" with "specifies."
- In line 15, correct the typo “complelty” to “completely.”
- Review punctuation after phrases like “for example” (e.g. line 7) to conform to standard usage.
🧰 Tools
🪛 LanguageTool
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example{some-name}.ts
mean that the part bet...(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both./utilsv2
and./utils
,...(FOR_NOW_COMMA)
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
20-23
: Correct Grammatical Errors in File Architecture
The bullet “All source files must written in typescript and end with the.ts
extension” should be rephrased as “All source files must be written in TypeScript and end with the.ts
extension.”🧰 Tools
🪛 LanguageTool
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...(WILL_BASED_ON)
24-39
: Improve Consistency in Folder and File Descriptions
The list under “File Architecture” shows inconsistent verb usage (e.g. “Contains” vs. “Contain”). For example, in line 25, change “Contain core code used everywhere” to “Contains core code used everywhere.” Also, please address the indentation issues flagged by markdownlint for a more uniform look.🧰 Tools
🪛 LanguageTool
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. -./utils/derived
Contains all the derived classes, for exampl...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). -./hot-reload
Contains all the hot reloaded code used during t...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. -./output
Stores all the...(SPLIT_INFINITIVE)
63-68
: Rectify Grammatical Errors in Class Description
In the “Class Architecture” section, phrases such as “inherits directory or indirectly” (lines 63–64) should be corrected to “inherits directly or indirectly,” and “provide an abstraction” should be updated to “provides an abstraction.”🧰 Tools
🪛 LanguageTool
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. -Page class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. -Element class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For exampleLoginPage.getSelf()
returns a playwri...(COMMA_FOR_EXAMPLE)
85-96
: Address Minor Grammatical Issues in Class Coding Rules
Within the Class Coding Rules section, update “which describe the structure” (line 91) to “which describes the structure” to ensure correct subject–verb agreement.🧰 Tools
🪛 LanguageTool
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named{MixinName}I
which describe the structure of the **m...(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the${MixinName}I
interface inside the body of the class ...(I_APOSTROPHE_X)
176-193
: Clarify the Super-Element Chain Section
In the “Super-element chain” section, the phrasing in line 180 (“generated by aPage
objectsomePage
super-element”) is unclear. Consider revising it for clarity (e.g. “generated by aPage
object used as the super-element”). Also, in line 184, change “ie set to” to “is set to.”
194-209
: Fix Repetition and Typos in Element Context Section
A duplicate word appears in line 197 (“the the”). Removing the extra instance will improve clarity. A slight rewording of the sentence in line 200 could also enhance readability.🧰 Tools
🪛 LanguageTool
[uncategorized] ~196-~196: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in./utils/core/element.ts
). Also allElement
objects have an internal ...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~197-~197: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the theElement
fundamental class like `getCo...(ENGLISH_WORD_REPEAT_RULE)
🪛 markdownlint-cli2 (0.17.2)
206-206: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
207-207: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
210-221
: Correct Spelling in Method Architecture Section
In line 212, correct “folliwing” to “following” in the sentence “All methods must be named after one of the folliwing prefixes.”
222-230
: Enhance Clarity in Method Types Description
For the “Abstract methods” section (line 225), consider rephrasing to: “An abstract method exists solely to indicate that it must be implemented by derived classes with the same function signature.” This will improve clarity and readability.🧰 Tools
🪛 LanguageTool
[grammar] ~224-~224: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: .... ## Method Types -Regular methods
Are normal methods which correspond to none...(MISSING_SUBJECT)
[grammar] ~225-~225: “Method” is a singular noun. It appears that the verb form is incorrect.
Context: ...base class**, an abstract method purely exist to indicate that this method must be im...(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)
[grammar] ~226-~226: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: ...ls/core/base.ts. -
Protected methodsAre
protected` and defined either in a **b...(MISSING_SUBJECT)
[typographical] ~227-~227: After the expression ‘for example’ a comma is usually used.
Context: ...o exclusively be called internally. For example a regular methodsdoSomething
defined...(COMMA_FOR_EXAMPLE)
231-252
: Revise Docstrings Rules for Consistency
Within the Docstrings rules, correct “optionnal” (line 236) to “optional” and rephrase “what page they representing” (line 244) to “what page they represent.” Additionally, look to vary the sentence openings in the bullet list to reduce repetitiveness.🧰 Tools
🪛 LanguageTool
[style] ~242-~242: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e the impacts on the page. -do{...}P
Methods must specify everything likedo{...}
...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~243-~243: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...the function's signature. -wait{...}
Methods must specify what it waits for. - `Page...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~244-~244: An auxiliary verb seems to be missing from this progressive structure. Did you mean “they're representing”, “they are representing”, or “they were representing”?
Context: ...-Page
classes must specify what page they representing (by giving an endpoint e.g. `/analytics...(PRP_VBG)
253-261
: Correct Minor Typos in Data-TestIDs Rules
In this section, adjust “the kebab-case version if this component” (line 256) to “the kebab-case version of this component,” and correct “mentionned” (line 260) to “mentioned.”🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
260-260: Unordered list indentation
Expected: 0; Actual: 2(MD007, ul-indent)
262-268
: Fix Grammatical Error in Test Data Rules
In line 266, change “stored same test file” to “stored in the same test file” to ensure grammatical correctness.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
documentation/functional_testing/architecture.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
documentation/functional_testing/architecture.md
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example {some-name}.ts
mean that the part bet...
(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both ./utilsv2
and ./utils
,...
(FOR_NOW_COMMA)
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...
(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...
(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...
(WILL_BASED_ON)
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. - ./utils/derived
Contains all the derived classes, for exampl...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). - ./hot-reload
Contains all the hot reloaded code used during t...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...
(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. - ./output
Stores all the...
(SPLIT_INFINITIVE)
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...
(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the form Have{Something}
, because a mixin only indicates the presence...
(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example the HaveSidebar
mixin indicates t...
(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...
(NOT_TO_DOES_NOT)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. - Page class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...
(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. - Element class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...
(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For example LoginPage.getSelf()
returns a playwri...
(COMMA_FOR_EXAMPLE)
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named {MixinName}I
which describe the structure of the **m...
(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the ${MixinName}I
interface inside the body of the class ...
(I_APOSTROPHE_X)
[uncategorized] ~196-~196: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in ./utils/core/element.ts
). Also all Element
objects have an internal ...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~197-~197: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the the Element
fundamental class like `getCo...
(ENGLISH_WORD_REPEAT_RULE)
[grammar] ~224-~224: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: .... ## Method Types - Regular methods
Are normal methods which correspond to none...
(MISSING_SUBJECT)
[grammar] ~225-~225: “Method” is a singular noun. It appears that the verb form is incorrect.
Context: ...base class**, an abstract method purely exist to indicate that this method must be im...
(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)
[grammar] ~226-~226: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: ...ls/core/base.ts. -
Protected methodsAre
protected` and defined either in a **b...
(MISSING_SUBJECT)
[typographical] ~227-~227: After the expression ‘for example’ a comma is usually used.
Context: ...o exclusively be called internally. For example a regular methods doSomething
defined...
(COMMA_FOR_EXAMPLE)
[style] ~242-~242: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e the impacts on the page. - do{...}P
Methods must specify everything like do{...}
...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~243-~243: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...the function's signature. - wait{...}
Methods must specify what it waits for. - `Page...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~244-~244: An auxiliary verb seems to be missing from this progressive structure. Did you mean “they're representing”, “they are representing”, or “they were representing”?
Context: ...- Page
classes must specify what page they representing (by giving an endpoint e.g. `/analytics...
(PRP_VBG)
🪛 markdownlint-cli2 (0.17.2)
documentation/functional_testing/architecture.md
130-130: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
131-131: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
206-206: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
207-207: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
260-260: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: enterprise-startup-functional-test (3.12)
- GitHub Check: enterprise-startup-docker-compose-test
- GitHub Check: startup-functional-test (3.12)
- GitHub Check: functional-tests (3.12, chromium)
- GitHub Check: startup-docker-compose-test
- GitHub Check: enterprise-functional-tests (3.12, chromium)
- GitHub Check: Analyze (python)
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (7)
documentation/functional_testing/architecture.md (7)
70-81
: Verify Mermaid Diagram Rendering
The Mermaid diagram illustrating the relationships between the fundamental, base, and derived classes is well structured. Please verify that the diagram renders correctly in all documentation viewers.
97-103
: Ensure Clarity of Import Restrictions
The rule on importing files from./utils
in test code is clearly stated. Please double-check that this restriction is enforced consistently across the codebase.
104-109
: Fixture Coding Rules Are Well Defined
The guidelines regarding fixture coding are comprehensive. No changes are required here aside from a final proofreading for consistency.
110-122
: Clarify Ambiguity in Element Access Definition
The statement “IfA
is an element we can say that: -A
is a super-element ofA
” (line 118) is ambiguous. Please clarify the intended meaning—possibly by rephrasing to indicate whether an element is self-referential or if a different relationship is intended.
127-138
: Element Access Rules Are Comprehensive
The rules governing how elements are accessed, including the use of the_getSubElement
method, are well explained. Ensure that the implementation in code reflects these rules accurately.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
130-130: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
131-131: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
139-151
: Example 1: Mermaid Diagram Review
The Mermaid diagram in Example 1 clearly visualizes the element hierarchy and access rules. Confirm that the rendered diagram matches expectations in documentation previews.
152-174
: Example 2: Validate Flowchart Accuracy
Example 2 provides both a TypeScript code snippet and a complementary Mermaid diagram. The example effectively demonstrates the intended element access flow. Please verify that both remain consistent with actual code behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (16)
documentation/functional_testing/architecture.md (16)
8-10
: Clarify Syntax and Terminology in Curly Brace Expressions
The description about the{...}
and{ClassName}
syntax would benefit from a slight punctuation tweak. For example, after "For example" in line 10, a comma is typically expected. Also, consider revising "precises" to "specifies" for clarity.🧰 Tools
🪛 LanguageTool
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example{some-name}.ts
mean that the part bet...(COMMA_FOR_EXAMPLE)
12-12
: Grammar Corrections in Folder Naming Description
In line 12, update “./utilsv2
contain the refactored version…” to “./utilsv2
contains the refactored version…”, and change “describe in this spec” to “described in this spec” for proper subject-verb agreement.
13-15
: Improve Grammar in Spec Description
Line 13 should read “This spec describes how the test codebase should be…” and in line 15, correct “complelty” to “completely.” These changes will make the intent clearer and improve readability.🧰 Tools
🪛 LanguageTool
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~15-~15: Possible missing comma found.
Context: ...elty stops being used by the functional tests the current./utils
folder will be er...(AI_HYDRA_LEO_MISSING_COMMA)
22-22
: Fix Verb Form and Capitalization for Language Standards
Line 22 must be updated to “All source files must be written in TypeScript and end with the.ts
extension.”🧰 Tools
🪛 LanguageTool
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...(WILL_BASED_ON)
24-31
: Ensure Consistency in Bullet List Items
The folder architecture list (lines 24–31) is clear overall, but consider reviewing punctuation and the parallel structure in these items. Consistent phrasing (e.g. “Contains …”) boosts readability.🧰 Tools
🪛 LanguageTool
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
32-38
: Standardize List Indentation and Formatting
The subsequent bullet list (lines 32–38) should follow a consistent indentation style. Aligning the list items improves both the visual structure and clarity of the documentation.🧰 Tools
🪛 LanguageTool
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. -./utils/derived
Contains all the derived classes, for exampl...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). -./hot-reload
Contains all the hot reloaded code used during t...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~34-~34: Possible missing comma found.
Context: ...ich contains some default code to start with as it may be hard to understand how to ...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. -./output
Stores all the...(SPLIT_INFINITIVE)
55-60
: Correct Grammatical Error in Mixins Description
In line 59, the phrase “…indicates the presence of aSidebar
element in the page (which it not present in the login page)…” should be updated to “…indicates the presence of aSidebar
element in the page (which is not present in the login page).”🧰 Tools
🪛 LanguageTool
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the formHave{Something}
, because a mixin only indicates the presence...(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example theHaveSidebar
mixin indicates t...(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...(NOT_TO_DOES_NOT)
61-64
: Refine Derived Class Descriptions
In the “Derived classes” section, revise “inherits directory or indirectly…” found in line 61 to “inherits directly or indirectly…” for clarity. Additionally, ensure that the explanation of what differentiates a derived class from a base class is conveyed in a clear and concise manner.🧰 Tools
🪛 LanguageTool
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...t from a base class most of the time but might also inherit directly from a **fu...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...al of a derived class is to be used directly while the main goal of a base class...(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. -Page class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. -Element class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...(IS_AND_ARE)
67-69
: Remove Duplicate Documentation forgetSelf
Method
The explanation of thegetSelf
method is duplicated between lines 63–65 and lines 67–69. Consolidate these sections to eliminate redundancy and improve document conciseness.🧰 Tools
🪛 LanguageTool
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For exampleLoginPage.getSelf()
returns a playwri...(COMMA_FOR_EXAMPLE)
91-94
: Improve Grammar in Mixin Coding Rules
In the mixin section (lines 91–94), change “which describe the structure” to “which describes the structure” for correct subject-verb agreement.🧰 Tools
🪛 LanguageTool
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named{MixinName}I
which describe the structure of the **m...(I_APOSTROPHE_X)
137-142
: Enhance Clarity in Super-Element Chain Description
Lines 137–142 have several grammatical issues. For example, replace “ie set to” with “is set to” and “which mean” with “which means.” Also, consider rephrasing “When anElement
objectelem
object is generated…” to a clearer construction such as “When anElement
object (namedelem
) is generated by aPage
object (somePage
)...”
154-154
: Remove Duplicate Word
In line 154, there is a duplicated “the” (“defined in the theElement
fundamental class”). Removing the extra word will improve the flow.
178-182
: Polish the Language in Method Types Section
In line 180, update “an abstract method purely exist” to “an abstract method purely exists” and in line 182, ensure that singular/plural terms are used correctly (e.g., “a regular method” instead of “a regular methods”). These adjustments improve grammatical correctness.🧰 Tools
🪛 LanguageTool
[uncategorized] ~179-~179: “or” (‘either … or’) seems less likely than “of”.
Context: ...ain The super-element chain (or "chain or super-elements") of anElement
object...(AI_HYDRA_LEO_CP_OR_OF)
189-189
: Correct Typographical Error in Docstring Rules
Change “optionnal” in line 189 to “optional” to correct the typographical error.
212-216
: Clarify Test Data Rule Wording
In line 215, revise “the local test data must be stored same test file” to “the local test data must be stored in the same test file as the test that uses it.” This change will enhance clarity and grammatical correctness.
2-217
: Overall Formatting and Consistency Enhancements
A number of minor formatting and punctuation issues (such as missing commas after introductory phrases, repetitive sentence starters, and inconsistent list indentations as flagged by static analysis tools) have been noted throughout the document. Addressing these issues will improve overall readability and maintain a consistent style across the spec.🧰 Tools
🪛 LanguageTool
[uncategorized] ~7-~7: Possible missing comma found.
Context: ...e functional test base path. So for example the folder./utils/core
as cited in t...(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example{some-name}.ts
mean that the part bet...(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both./utilsv2
and./utils
,...(FOR_NOW_COMMA)
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~15-~15: Possible missing comma found.
Context: ...elty stops being used by the functional tests the current./utils
folder will be er...(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...(WILL_BASED_ON)
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. -./utils/derived
Contains all the derived classes, for exampl...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). -./hot-reload
Contains all the hot reloaded code used during t...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~34-~34: Possible missing comma found.
Context: ...ich contains some default code to start with as it may be hard to understand how to ...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. -./output
Stores all the...(SPLIT_INFINITIVE)
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the formHave{Something}
, because a mixin only indicates the presence...(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example theHaveSidebar
mixin indicates t...(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...(NOT_TO_DOES_NOT)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...t from a base class most of the time but might also inherit directly from a **fu...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...al of a derived class is to be used directly while the main goal of a base class...(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. -Page class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. -Element class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For exampleLoginPage.getSelf()
returns a playwri...(COMMA_FOR_EXAMPLE)
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named{MixinName}I
which describe the structure of the **m...(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the${MixinName}I
interface inside the body of the class ...(I_APOSTROPHE_X)
[uncategorized] ~99-~99: Possible missing comma found.
Context: ..../utils
in the test code is STRICTLY FORBIDDEN except for the following files:** 1. `....(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~118-~118: Possible missing comma found.
Context: ... a sub-element ofA
IfA
is an element we can say that: -A
is a **super-ele...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~121-~121: Possible missing comma found.
Context: ...a super-element ofA
IfA
is a page we can say that: -A
is the page of `...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~179-~179: “or” (‘either … or’) seems less likely than “of”.
Context: ...ain The super-element chain (or "chain or super-elements") of anElement
object...(AI_HYDRA_LEO_CP_OR_OF)
[uncategorized] ~183-~183: Possible missing comma found.
Context: ...emobject is generated by an
Elementobject
superElem- The private property
ele...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~197-~197: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in./utils/core/element.ts
). Also allElement
objects have an internal ...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~198-~198: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the theElement
fundamental class like `getCo...(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~217-~217: Possible missing comma found.
Context: ...e used if the action redirects to a new page e.g. doLoginP). -get{Object}
Usually...(AI_HYDRA_LEO_MISSING_COMMA)
🪛 markdownlint-cli2 (0.17.2)
131-131: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
133-133: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
207-207: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
208-208: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
documentation/functional_testing/architecture.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
documentation/functional_testing/architecture.md
[uncategorized] ~7-~7: Possible missing comma found.
Context: ...e functional test base path. So for example the folder ./utils/core
as cited in t...
(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example {some-name}.ts
mean that the part bet...
(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both ./utilsv2
and ./utils
,...
(FOR_NOW_COMMA)
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...
(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~15-~15: Possible missing comma found.
Context: ...elty stops being used by the functional tests the current ./utils
folder will be er...
(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...
(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...
(WILL_BASED_ON)
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. - ./utils/derived
Contains all the derived classes, for exampl...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). - ./hot-reload
Contains all the hot reloaded code used during t...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~34-~34: Possible missing comma found.
Context: ...ich contains some default code to start with as it may be hard to understand how to ...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...
(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. - ./output
Stores all the...
(SPLIT_INFINITIVE)
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...
(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the form Have{Something}
, because a mixin only indicates the presence...
(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example the HaveSidebar
mixin indicates t...
(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...
(NOT_TO_DOES_NOT)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...t from a base class most of the time but might also inherit directly from a **fu...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...al of a derived class is to be used directly while the main goal of a base class...
(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. - Page class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...
(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. - Element class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...
(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For example LoginPage.getSelf()
returns a playwri...
(COMMA_FOR_EXAMPLE)
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named {MixinName}I
which describe the structure of the **m...
(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the ${MixinName}I
interface inside the body of the class ...
(I_APOSTROPHE_X)
[uncategorized] ~99-~99: Possible missing comma found.
Context: ... ./utils
in the test code is STRICTLY FORBIDDEN except for the following files:** 1. `....
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~118-~118: Possible missing comma found.
Context: ... a sub-element of A
If A
is an element we can say that: - A
is a **super-ele...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~121-~121: Possible missing comma found.
Context: ...a super-element of A
If A
is a page we can say that: - A
is the page of `...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~179-~179: “or” (‘either … or’) seems less likely than “of”.
Context: ...ain The super-element chain (or "chain or super-elements") of an Element
object...
(AI_HYDRA_LEO_CP_OR_OF)
[uncategorized] ~183-~183: Possible missing comma found.
Context: ...emobject is generated by an
Elementobject
superElem- The private property
ele...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~197-~197: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in ./utils/core/element.ts
). Also all Element
objects have an internal ...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~198-~198: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the the Element
fundamental class like `getCo...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~217-~217: Possible missing comma found.
Context: ...e used if the action redirects to a new page e.g. doLoginP). - get{Object}
Usually...
(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~225-~225: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: .... ## Method Types - Regular methods
Are normal methods which correspond to none...
(MISSING_SUBJECT)
[grammar] ~226-~226: “Method” is a singular noun. It appears that the verb form is incorrect.
Context: ...base class**, an abstract method purely exist to indicate that this method must be im...
(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)
[grammar] ~227-~227: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: ...ls/core/base.ts. -
Protected methodsAre
protected` and defined either in a **b...
(MISSING_SUBJECT)
[typographical] ~228-~228: After the expression ‘for example’ a comma is usually used.
Context: ...o exclusively be called internally. For example a regular methods doSomething
defined...
(COMMA_FOR_EXAMPLE)
[uncategorized] ~236-~236: Possible missing comma found.
Context: ...trings rules Most docstrings should be short except for complex classes/functions. W...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~243-~243: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e the impacts on the page. - do{...}P
Methods must specify everything like do{...}
...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~244-~244: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...the function's signature. - wait{...}
Methods must specify what it waits for. - `Page...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~245-~245: An auxiliary verb seems to be missing from this progressive structure. Did you mean “they're representing”, “they are representing”, or “they were representing”?
Context: ...- Page
classes must specify what page they representing (by giving an endpoint e.g. `/analytics...
(PRP_VBG)
🪛 markdownlint-cli2 (0.17.2)
documentation/functional_testing/architecture.md
131-131: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
133-133: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
207-207: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
208-208: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
261-261: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: startup-docker-compose-test
- GitHub Check: enterprise-startup-functional-test (3.12)
- GitHub Check: enterprise-functional-tests (3.12, chromium)
- GitHub Check: enterprise-startup-docker-compose-test
- GitHub Check: functional-tests (3.12, chromium)
- GitHub Check: startup-functional-test (3.12)
- GitHub Check: Analyze (python)
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (3)
documentation/functional_testing/architecture.md (3)
70-81
: Mermaid Diagram Verification
The Mermaid diagram (lines 70–81) effectively illustrates the relationships between classes. No changes are required here.
96-102
: Enforce Import Restrictions Clearly
The rule regarding importing files from./utils
in test code (lines 96–102) is clearly stated and unambiguous.🧰 Tools
🪛 LanguageTool
[uncategorized] ~99-~99: Possible missing comma found.
Context: ..../utils
in the test code is STRICTLY FORBIDDEN except for the following files:** 1. `....(AI_HYDRA_LEO_MISSING_COMMA)
170-177
: Review Method Naming Conventions
Within the list of method prefixes (lines 170–177), the documentation states that a check function must always take anExcept
as its first argument. Verify whether “Except” is intentional or if it should be “expect” (or another term) to accurately reflect the intended API.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🔭 Outside diff range comments (1)
documentation/functional_testing/architecture.md (1)
262-271
:⚠️ Potential issueDuplicate Test Data Rules Section
It appears that the test data rules are stated twice (lines 262–267 and again in lines 268–271). To avoid confusion and redundancy, please remove the duplicated section.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~268-~268: Possible missing article found.
Context: ... the local test data must be stored same test file as the test which uses it.(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
262-262: Unordered list indentation
Expected: 0; Actual: 2(MD007, ul-indent)
🧹 Nitpick comments (12)
documentation/functional_testing/architecture.md (12)
4-7
: Punctuation and Example Clarity in ConventionsIn these lines, the explanation of the test base path is clear overall; however, consider inserting a comma immediately after introductory phrases such as “So for example” (cf. static hint ~7) to improve readability.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~7-~7: Possible missing comma found.
Context: ...e functional test base path. So for example the folder./utils/core
as cited in t...(AI_HYDRA_LEO_MISSING_COMMA)
8-11
: Comma Usage and Grammar in the Placeholder Syntax DescriptionIn line 10, “For example
{some-name}.ts
mean…” would be clearer as “For example,{some-name}.ts
means…”. Also, in line 11, adding a comma after “explicitely defined somewhere in this spec” would help readability (cf. static hints ~10 and ~11).🧰 Tools
🪛 LanguageTool
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example{some-name}.ts
mean that the part bet...(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both./utilsv2
and./utils
,...(FOR_NOW_COMMA)
12-17
: Grammar and Spelling Improvements in the Introductory Convention SectionSeveral grammatical improvements are suggested:
- In line 13, “This spec describe…” should be “This spec describes…”.
- In line 15, “complelty stops being used” should be corrected to “completely stops being used”.
- Consider adding commas after conjunctive adverbs (e.g. “Therefore” in line 14) for clarity (cf. corresponding static hints).
🧰 Tools
🪛 LanguageTool
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~15-~15: Possible missing comma found.
Context: ...elty stops being used by the functional tests the current./utils
folder will be er...(AI_HYDRA_LEO_MISSING_COMMA)
18-23
: Correction Needed in File Architecture HeaderIn line 22, “All source files must written in typescript…” should be corrected to “All source files must be written in TypeScript…” (including proper casing for “TypeScript”).
🧰 Tools
🪛 LanguageTool
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...(WILL_BASED_ON)
24-39
: Consistent List Formatting in the File Architecture SectionThe bullet list detailing the file structure is thorough. However, static analysis indicates inconsistent list indentation (MD005). Consider revising the markdown list formatting for consistent bullet alignment.
🧰 Tools
🪛 LanguageTool
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. -./utils/derived
Contains all the derived classes, for exampl...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). -./hot-reload
Contains all the hot reloaded code used during t...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~34-~34: Possible missing comma found.
Context: ...ich contains some default code to start with as it may be hard to understand how to ...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. -./output
Stores all the...(SPLIT_INFINITIVE)
40-68
: Clarify and Correct Grammar in the Class Architecture Section
- In lines 60, the sentence “For example the
HaveSidebar
mixin indicates the presence of aSidebar
element in the page (which it not present in the login page)…” should be amended to “(which is not present in the login page)”.- In line 61, “What make a derived class differs…” should be rephrased to “What makes a derived class different from a base class is its usage.”
- In lines 63–64, the phrase “inherits directory or indirectly” appears to be a typo; it likely should read “inherits directly or indirectly.”
🧰 Tools
🪛 LanguageTool
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the formHave{Something}
, because a mixin only indicates the presence...(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example theHaveSidebar
mixin indicates t...(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...(NOT_TO_DOES_NOT)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...t from a base class most of the time but might also inherit directly from a **fu...(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...al of a derived class is to be used directly while the main goal of a base class...(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. -Page class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. -Element class
Is how we call any class that inherits dir...(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For exampleLoginPage.getSelf()
returns a playwri...(COMMA_FOR_EXAMPLE)
82-96
: Improving Clarity in the Class Coding RulesA minor grammatical fix: In line 91, “…which describe the structure…” should be “…which describes the structure…”. Also, ensure that list numbering and punctuation are consistent throughout the section.
🧰 Tools
🪛 LanguageTool
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named{MixinName}I
which describe the structure of the **m...(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the${MixinName}I
interface inside the body of the class ...(I_APOSTROPHE_X)
97-105
: THE MOST IMPORTANT RULE – Minor Punctuation SuggestionThis section is very important for enforcing guidelines. A careful review of punctuation (e.g., after introductory phrases in line 99) is recommended to ensure clarity.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~99-~99: Possible missing comma found.
Context: ..../utils
in the test code is STRICTLY FORBIDDEN except for the following files:** 1. `....(AI_HYDRA_LEO_MISSING_COMMA)
178-186
: Super-Element Chain Section: Grammar and Clarity
- In line 185, “ie set to” should be “is set to” and “which mean” should be “which means”.
- The phrasing “generated by a
Page
objectsomePage
super-element” is a bit awkward; consider rewording for clarity.🧰 Tools
🪛 LanguageTool
[uncategorized] ~180-~180: “or” (‘either … or’) seems less likely than “of”.
Context: ...ain The super-element chain (or "chain or super-elements") of anElement
object...(AI_HYDRA_LEO_CP_OR_OF)
[uncategorized] ~184-~184: Possible missing comma found.
Context: ...emobject is generated by an
Elementobject
superElem- The private property
ele...(AI_HYDRA_LEO_MISSING_COMMA)
195-201
: Context of an Element: Add Commas for ReadabilityIn line 198, inserting a comma after “Also” would improve readability. Similarly, in line 200, a comma after “when a value is found” would enhance clarity.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~198-~198: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in./utils/core/element.ts
). Also allElement
objects have an internal ...(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~199-~199: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the theElement
fundamental class like `getCo...(ENGLISH_WORD_REPEAT_RULE)
222-230
: Method Types: Clarify DescriptionsSome grammatical adjustments are needed:
- In line 225, “an abstract method purely exist” should be rephrased to “an abstract method exists solely to indicate…”.
- In line 228, consider rephrasing the sentence about wrapped protected methods to remove ambiguity.
🧰 Tools
🪛 LanguageTool
[grammar] ~226-~226: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: .... ## Method Types -Regular methods
Are normal methods which correspond to none...(MISSING_SUBJECT)
[grammar] ~227-~227: “Method” is a singular noun. It appears that the verb form is incorrect.
Context: ...base class**, an abstract method purely exist to indicate that this method must be im...(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)
[grammar] ~228-~228: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: ...ls/core/base.ts. -
Protected methodsAre
protected` and defined either in a **b...(MISSING_SUBJECT)
[typographical] ~229-~229: After the expression ‘for example’ a comma is usually used.
Context: ...o exclusively be called internally. For example a regular methodsdoSomething
defined...(COMMA_FOR_EXAMPLE)
[uncategorized] ~230-~230: “if” (in case) seems less likely than “of”.
Context: ...red with an abstract method version if itself. So we could also have a `doSome...(AI_HYDRA_LEO_CP_IF_OF)
233-252
: Docstrings Rules: Spelling CorrectionIn line 236, “optionnal” should be corrected to “optional”. Otherwise, the guidelines are well laid out.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~237-~237: Possible missing comma found.
Context: ...trings rules Most docstrings should be short except for complex classes/functions. W...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~244-~244: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e the impacts on the page. -do{...}P
Methods must specify everything likedo{...}
...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~245-~245: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...the function's signature. -wait{...}
Methods must specify what it waits for. - `Page...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~246-~246: An auxiliary verb seems to be missing from this progressive structure. Did you mean “they're representing”, “they are representing”, or “they were representing”?
Context: ...-Page
classes must specify what page they representing (by giving an endpoint e.g. `/analytics...(PRP_VBG)
[uncategorized] ~246-~246: Possible missing comma found.
Context: ...at page they representing (by giving an endpoint e.g./analytics
). -Mixins
Must spe...(AI_HYDRA_LEO_MISSING_COMMA)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
documentation/functional_testing/architecture.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
documentation/functional_testing/architecture.md
[uncategorized] ~7-~7: Possible missing comma found.
Context: ...e functional test base path. So for example the folder ./utils/core
as cited in t...
(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~10-~10: After the expression ‘for example’ a comma is usually used.
Context: ... what case it should be written to. For example {some-name}.ts
mean that the part bet...
(COMMA_FOR_EXAMPLE)
[typographical] ~11-~11: Consider adding a comma here.
Context: ...icitely defined somewhere in this spec. For now we have both ./utilsv2
and ./utils
,...
(FOR_NOW_COMMA)
[grammar] ~13-~13: The verb ‘describe’ is plural. Did you mean: “describes”? Did you use a verb instead of a noun?
Context: ...ecture describe in this spec. This spec describe how the test codebase should be, not ho...
(PLURAL_VERB_AFTER_THIS)
[uncategorized] ~13-~13: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...be, not how it is at this exact moment. Therefore all mentions of relative paths starting...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~15-~15: Possible missing comma found.
Context: ...elty stops being used by the functional tests the current ./utils
folder will be er...
(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~21-~21: After the expression ‘for example’ a comma is usually used.
Context: ... files must have a kebab-case name. For example a file defining a class `UserSettingsPa...
(COMMA_FOR_EXAMPLE)
[grammar] ~22-~22: Did you mean “be written”?
Context: ...ettings-page.ts. All source files must written in typescript and end with the
.ts` ex...
(WILL_BASED_ON)
[style] ~28-~28: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...plementedfunctions. -
fixtures.tsContains all the fixture definitions. -
page....
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~33-~33: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e base classes. - ./utils/derived
Contains all the derived classes, for exampl...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~34-~34: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... (one file per class). - ./hot-reload
Contains all the hot reloaded code used during t...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~34-~34: Possible missing comma found.
Context: ...ich contains some default code to start with as it may be hard to understand how to ...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~34-~34: To elevate your writing, try using a synonym here.
Context: ...default code to start with as it may be hard to understand how to effectively use th...
(HARD_TO)
[style] ~34-~34: Style-wise, it’s not ideal to insert an adverb (‘effectively’) in the middle of an infinitive construction (‘to use’). Try moving the adverb to avoid split infinitives.
Context: ...ith as it may be hard to understand how to effectively use the hot reloader without it. - ./output
Stores all the...
(SPLIT_INFINITIVE)
[typographical] ~60-~60: Consider adding a comma here.
Context: ... the same file as its target class. - For now all mixins must have a name of the ...
(FOR_NOW_COMMA)
[formatting] ~60-~60: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ave a name of the form Have{Something}
, because a mixin only indicates the presence...
(COMMA_BEFORE_BECAUSE)
[typographical] ~60-~60: After the expression ‘for example’ a comma is usually used.
Context: ...hing (which is not always present). For example the HaveSidebar
mixin indicates t...
(COMMA_FOR_EXAMPLE)
[grammar] ~60-~60: Did you mean “doesn't present”?
Context: ...Sidebar
element in the page (which it not present in the login page), and the mixin imple...
(NOT_TO_DOES_NOT)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...t from a base class most of the time but might also inherit directly from a **fu...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~61-~61: Possible missing comma found.
Context: ...al of a derived class is to be used directly while the main goal of a base class...
(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~63-~63: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ... a derived classes. - Page class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~63-~63: Possible subject-verb agreement error.
Context: ...t basically wraps a playwright Page and provide an abstraction to control it. - `Elemen...
(IS_AND_ARE)
[grammar] ~64-~64: This sentence seems to be incomplete. Insert a noun before ‘Is’ to make the sentence complete.
Context: ...action to control it. - Element class
Is how we call any class that inherits dir...
(MISSING_SUBJECT)
[grammar] ~64-~64: Possible subject-verb agreement error.
Context: ...asically wraps a playwright Locator and provide an abstraction to control it. This is ...
(IS_AND_ARE)
[typographical] ~68-~68: After the expression ‘for example’ a comma is usually used.
Context: ...he object is an abstraction of. For example LoginPage.getSelf()
returns a playwri...
(COMMA_FOR_EXAMPLE)
[formatting] ~91-~91: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...st create and export an interface named {MixinName}I
which describe the structure of the **m...
(I_APOSTROPHE_X)
[formatting] ~95-~95: You have used ‘I’ with an apostrophe, but either the verb is missing or you have not used the corresponding abbreviated form. Consider using one of the suggestions or removing the apostrophe.
Context: ...s and their signature as defined in the ${MixinName}I
interface inside the body of the class ...
(I_APOSTROPHE_X)
[uncategorized] ~99-~99: Possible missing comma found.
Context: ... ./utils
in the test code is STRICTLY FORBIDDEN except for the following files:** 1. `....
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~119-~119: Possible missing comma found.
Context: ... a sub-element of A
If A
is an element we can say that: - A
is a **super-ele...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~122-~122: Possible missing comma found.
Context: ...a super-element of A
If A
is a page we can say that: - A
is the page of `...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~180-~180: “or” (‘either … or’) seems less likely than “of”.
Context: ...ain The super-element chain (or "chain or super-elements") of an Element
object...
(AI_HYDRA_LEO_CP_OR_OF)
[uncategorized] ~184-~184: Possible missing comma found.
Context: ...emobject is generated by an
Elementobject
superElem- The private property
ele...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~198-~198: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ... defined in ./utils/core/element.ts
). Also all Element
objects have an internal ...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[duplication] ~199-~199: Possible typo: you repeated a word.
Context: ...accessed by multiple methods defined in the the Element
fundamental class like `getCo...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~218-~218: Possible missing comma found.
Context: ...e used if the action redirects to a new page e.g. doLoginP). - get{Object}
Usually...
(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~226-~226: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: .... ## Method Types - Regular methods
Are normal methods which correspond to none...
(MISSING_SUBJECT)
[grammar] ~227-~227: “Method” is a singular noun. It appears that the verb form is incorrect.
Context: ...base class**, an abstract method purely exist to indicate that this method must be im...
(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)
[grammar] ~228-~228: This sentence seems to be incomplete. Insert a noun before ‘Are’ to make the sentence complete.
Context: ...ls/core/base.ts. -
Protected methodsAre
protected` and defined either in a **b...
(MISSING_SUBJECT)
[typographical] ~229-~229: After the expression ‘for example’ a comma is usually used.
Context: ...o exclusively be called internally. For example a regular methods doSomething
defined...
(COMMA_FOR_EXAMPLE)
[uncategorized] ~230-~230: “if” (in case) seems less likely than “of”.
Context: ...red with an abstract method version if itself. So we could also have a `doSome...
(AI_HYDRA_LEO_CP_IF_OF)
[uncategorized] ~237-~237: Possible missing comma found.
Context: ...trings rules Most docstrings should be short except for complex classes/functions. W...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~244-~244: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e the impacts on the page. - do{...}P
Methods must specify everything like do{...}
...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~245-~245: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...the function's signature. - wait{...}
Methods must specify what it waits for. - `Page...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~246-~246: An auxiliary verb seems to be missing from this progressive structure. Did you mean “they're representing”, “they are representing”, or “they were representing”?
Context: ...- Page
classes must specify what page they representing (by giving an endpoint e.g. `/analytics...
(PRP_VBG)
[uncategorized] ~246-~246: Possible missing comma found.
Context: ...at page they representing (by giving an endpoint e.g. /analytics
). - Mixins
Must spe...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~258-~258: “if” (in case) seems less likely than “of”.
Context: ... a name which is the kebab-case version if this component which is `some-component...
(AI_HYDRA_LEO_CP_IF_OF)
[uncategorized] ~258-~258: Possible missing comma found.
Context: ...which is the kebab-case version if this component which is some-component
in this case....
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~268-~268: Possible missing article found.
Context: ... the local test data must be stored same test file as the test which uses it.
(AI_HYDRA_LEO_MISSING_THE)
🪛 markdownlint-cli2 (0.17.2)
documentation/functional_testing/architecture.md
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
133-133: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
134-134: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
208-208: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
209-209: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
262-262: Unordered list indentation
Expected: 0; Actual: 2
(MD007, ul-indent)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: startup-functional-test (3.12)
- GitHub Check: startup-docker-compose-test
- GitHub Check: functional-tests (3.12, chromium)
- GitHub Check: enterprise-startup-functional-test (3.12)
- GitHub Check: enterprise-startup-docker-compose-test
- GitHub Check: enterprise-functional-tests (3.12, chromium)
- GitHub Check: Analyze (python)
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (9)
documentation/functional_testing/architecture.md (9)
70-81
: Mermaid Diagram for Class Relationships – Looks GoodThe diagram clearly illustrates the relationships among Fundamental, Base, Derived classes, and Mixins. No changes are needed here.
106-111
: Fixture Coding Rules – No IssuesThe fixture coding rules are clearly stated.
141-153
: Example 1 – Mermaid Diagram ClarityThe mermaid diagram in this example clearly illustrates the intended element relationships. No changes are needed.
154-162
: Example 2 – Test Code SampleThe provided test code sample is clear and matches the explanatory text for element access.
163-176
: Example 2 – Additional Mermaid DiagramThe secondary diagram further reinforces the explanation for element access and is well presented.
187-194
: Super-Element Chain Examples – Looks GoodThe examples demonstrating the element chain are clearly presented.
202-209
: Context Sources Order – Clear and InformativeThe ordered list of context sources is clearly delineated and easy to understand.
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
208-208: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
209-209: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2(MD005, list-indent)
231-232
: Miscellaneous Header – No IssuesThis header is acceptable as is.
253-261
: Data-TestIDs Rules – Well DefinedThe rules for data-test IDs are clearly defined and adhere to the desired convention.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~258-~258: “if” (in case) seems less likely than “of”.
Context: ... a name which is the kebab-case version if this component which is `some-component...(AI_HYDRA_LEO_CP_IF_OF)
[uncategorized] ~258-~258: Possible missing comma found.
Context: ...which is the kebab-case version if this component which issome-component
in this case....(AI_HYDRA_LEO_MISSING_COMMA)
## Element access | ||
|
||
If a `Page`/`Element` `A` class can return an `Element` `B` we can say that: | ||
- `A` **accesses**/can **access** `B`. | ||
- `B` is **accessed**/accessible by `A` | ||
- `B` is a **sub-element** of `A` | ||
|
||
If `A` is an element we can say that: | ||
- `A` is a **super-element** of `A` | ||
|
||
If `A` is a page we can say that: | ||
- `A` is the page of `B` | ||
|
||
If a `Page`/`Element` `A` class returned an `Element` `B` we can say that: | ||
- `A` generated `B` | ||
- `B` has been generated by `A` | ||
|
||
### Element Access Rules (also in ./utils) | ||
|
||
1. **A Page/Element object MUST NEVER be able to return 2 HTML elements that overlap each other**. Let's say that `A` is any `Element` object/Locator returned by a class `Class` and `OTHERS` are all the other `Element` objects/Locators that can be returned from `Class` then: | ||
1. `A` Must not be present in `OTHERS` (no HTML element in `OTHERS` must be the same as `A`). | ||
2. `A` Must not be the parent of any HTML element in `OTHERS`. | ||
3. `A` Must not be a child of any HTML element in `OTHERS`. | ||
2. An `Element` MUST ONLY be accessed by the underlying use of the `_getSubElement` **protected method** which is defined for both **fundamental classes** (`Page` and `Element`). | ||
3. An `Element` MUST ONLY be able to access elements that are its children. | ||
4. There must be ONE AND ONLY ONE way to access an `Element` object, for example you can't have `somePage.getModelTable().getFirstRow()` and another method `somePage.getFirstModelTableRow()` which returns the same thing. | ||
5. All `Element` objects must only be externally accessible by a chain of `get{...}` method calls starting from a `Page` object. | ||
6. The `getOpen{...}` methods are allowed to break these rules, for example in a method to open and get a modal, the modal may not be a child of the abstraction that opened it. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review of Element Access Rules
There is a major logical concern in line 119 where the rule states “If A
is an element we can say that: - A
is a super-element of A
.” This statement is confusing and likely represents a mistake—an element should not be considered a super-element of itself. Please review and clarify this rule to ensure it accurately reflects the intended relationship.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~119-~119: Possible missing comma found.
Context: ... a sub-element of A
If A
is an element we can say that: - A
is a **super-ele...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~122-~122: Possible missing comma found.
Context: ...a super-element of A
If A
is a page we can say that: - A
is the page of `...
(AI_HYDRA_LEO_MISSING_COMMA)
🪛 markdownlint-cli2 (0.17.2)
132-132: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
133-133: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
134-134: Inconsistent indentation for list items at the same level
Expected: 0; Actual: 2
(MD005, list-indent)
4. The static `CONTEXT` property of the class of the element's class. | ||
|
||
# Method architecture | ||
|
||
All methods must be named after one of the folliwing prefixes: | ||
|
||
- `check{Something}(expect, {...})` Checks for something, this is a wrapper around one or multiple playwright checks (e.g. checkUrl, checkBreadcrumbPath). A check function must always take an `Except` as its first argument. Checks must never use the `expect.soft({...})` alternative of the original `except` function. | ||
- `do{Action}` Does an action (e.g. doFillForm, doCloseModal). | ||
- `do{Action}P` Does an action that returns a page (this must be used if the action redirects to a new page e.g. doLoginP). | ||
- `get{Object}` Usually return an `Element` object, a playwright Locator. But it can also return any kind of values (e.g. getNumberOfPages()). | ||
- `getOpen{Object}` Opens an element (e.g. a modal) and returns the `Element` object or playwright Locator representing it. | ||
- `goto{Object}` Goto a specific link and returns a `Page` object representing the newly loaded page (e.g. gotoSelf). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Method Architecture: Verify Function Argument Naming
The guideline “a check function must always take an Except
as its first argument” appears to be a typo. It should likely read “expect” (as used in testing frameworks). Please verify and update accordingly.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~218-~218: Possible missing comma found.
Context: ...e used if the action redirects to a new page e.g. doLoginP). - get{Object}
Usually...
(AI_HYDRA_LEO_MISSING_COMMA)
4d00ef3
to
aa7f3e5
Compare
816c636
to
54368d8
Compare
Summary by CodeRabbit