Skip to content

Optimized skill for web tests generation#270

Open
GrimA9e wants to merge 1 commit into
vividus-framework:mainfrom
GrimA9e:web_skill_update
Open

Optimized skill for web tests generation#270
GrimA9e wants to merge 1 commit into
vividus-framework:mainfrom
GrimA9e:web_skill_update

Conversation

@GrimA9e
Copy link
Copy Markdown
Contributor

@GrimA9e GrimA9e commented Apr 24, 2026

Summary by CodeRabbit

  • Documentation
    • Workflow now generates only VIVIDUS .story files (no summary, test-data, or extra markdown).
    • Assumptions embedded inline as [ASSUMPTION] comments; example locator updated to use buttonName.
    • Discovery enhanced to fetch available VIVIDUS steps and consult additional docs when syntax is unclear; missing steps marked as [MISSING STEP].
    • Hardcoded dynamic values banned with Bad/Good examples; tighter rules for Examples tables and locator terminology; visual-baseline no longer mandatory for 3+ elements.

@GrimA9e GrimA9e requested a review from a team as a code owner April 24, 2026 10:25
@GrimA9e GrimA9e requested review from uarlouski, valfirst and vkepin and removed request for a team April 24, 2026 10:25
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

Warning

Rate limit exceeded

@GrimA9e has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 8 minutes and 40 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 8 minutes and 40 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 47f807bd-4da1-4a3b-a686-ca04b53a83ad

📥 Commits

Reviewing files that changed from the base of the PR and between c0c723d and 7177155.

📒 Files selected for processing (1)
  • .github/skills/generate-vividus-web-tests/SKILL.md
📝 Walkthrough

Walkthrough

Workflow updated to generate only VIVIDUS .story files. Step numbering and locator-collection target adjusted. Assumptions are embedded inline as [ASSUMPTION] comments. Step 3 now requires fetching VIVIDUS steps via MCP and optionally context7 MCP; missing steps are marked [MISSING STEP]. Step 4 forbids hardcoded dynamic values and tightens locator guidance. Step 5 restricts outputs to a single .story file and removes @priority 0.

Changes

Cohort / File(s) Summary
VIVIDUS Story Generation Workflow
.github/skills/generate-vividus-web-tests/SKILL.md
Rewrote workflow to emit only .story files. Renumbered Step 2 target. Step 3 now mandates fetching VIVIDUS steps via VIVIDUS MCP and context7 MCP lookups when needed; removed coverage-report generation and replaced coverage statuses with [MISSING STEP] marking when step not found. Assumptions moved to inline [ASSUMPTION] comments and example simplified. Step 4 adds explicit ban on hardcoded dynamic values, updates locator terminology and Examples guidance, and removes mandatory visual-baseline rule. Step 5 restricts outputs to a single .story file, removes summary/test-data/markdown outputs, and drops @priority value 0; updates assumption locator example to use buttonName.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Skill
participant VIVIDUS_MCP as "VIVIDUS MCP"
participant CONTEXT7_MCP as "context7 MCP"
participant Filesystem

User->>Skill: Provide input (steps, locators, context)
Skill->>VIVIDUS_MCP: Request available VIVIDUS steps
VIVIDUS_MCP-->>Skill: Return step list
alt Step syntax unclear
    Skill->>CONTEXT7_MCP: Request context7 docs for clarification
    CONTEXT7_MCP-->>Skill: Return docs
end
Skill->>Skill: Map input steps to available steps (or mark [MISSING STEP])
Skill->>Filesystem: Write single `.story` file (embed [ASSUMPTION] comments)
Filesystem-->>Skill: Ack
Skill-->>User: Deliver `.story` file
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Optimized skill for web tests generation' is vague and generic, using the non-descriptive term 'optimized' without conveying specific information about the substantial changes made to the workflow. Clarify the title to reflect the main change, such as 'Shift web test generation to story-file output only' or 'Update VIVIDUS skill to embed assumptions in-story and validate step availability'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a 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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/skills/generate-vividus-web-tests/SKILL.md:
- Around line 59-61: The markdown has lint violations (MD058, MD022, MD031) due
to missing blank lines around tables, headings and fenced code blocks; fix by
inserting a blank line before and after the table that starts with "| Situation
| Assumption Made |", ensure each heading has an empty line above it and below
it, and add blank lines before and after the fenced code blocks (the example
using "gherkin" and the closing ``` fence); apply the same blank-line pattern to
the other occurrences referenced (the other table/heading/fence instances) so
all MD022/MD058/MD031 warnings are resolved.
- Around line 102-107: The policy text in SKILL.md currently contradicts itself
by saying "composite steps from `.steps` files take precedence" while rule 1
forbids using any steps not returned by VIVIDUS MCP; update the wording to
resolve this conflict by explicitly permitting project-level composite steps as
an allowed secondary source (in addition to MCP-returned steps) or by requiring
MCP discovery to include composites; modify the section containing "Priority
Rule" and the three "Strict rules" so it states that composite steps found in
project `.steps` files are valid and should be preferred when equivalent to MCP
steps, while still enforcing that any step not present in either MCP results or
project `.steps` must be marked `[MISSING STEP]` (refer to the "Priority Rule",
rule 1, and the guidance about `[MISSING STEP]`).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 84a46790-6432-40b2-82cc-62239967df61

📥 Commits

Reviewing files that changed from the base of the PR and between d97ac03 and 89f2c9b.

📒 Files selected for processing (1)
  • .github/skills/generate-vividus-web-tests/SKILL.md

Comment thread .github/skills/generate-vividus-web-tests/SKILL.md
Comment thread .github/skills/generate-vividus-web-tests/SKILL.md Outdated
1. **Retrieve** test cases to automate
2. **Execute** test cases with Playwright
3. **Analyze** test case coverage
3. **Analyze** test case and map to VIVIDUS
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not clear: map to ... what?

- `src/main/resources/story/**/*.story` — existing stories
- `src/main/resources/steps/*.steps` — reusable composite steps
3. Lifecycle and Examples usage (transformers, data tables), scenario structure and naming, meta tags
2. **MUST** obtain additional VIVIDUS documentation via **context7 MCP** when step syntax is unclear or additional capabilities need to be explored:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think context7 should be optional

- Call the MCP tool matching pattern `context7_query-docs` with the resolved library ID to look up specific step documentation, configuration options, or plugin capabilities
3. **MUST** read existing resources to learn patterns and conventions:
- `src/main/resources/story/**/*.story` — existing stories
- `src/main/resources/steps/*.steps` — reusable composite steps
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the paths should be moved to instructions

1. **Locators:** Follow the **Locator Stability Hierarchy** below to ensure stability.
2. **Expressions:** Use VIVIDUS expressions instead of hardcoded dynamic values — see **Use VIVIDUS Expressions Instead of Hardcoded Values** below.
3. **Data Tables:** Use Examples blocks **only** when a scenario must run with multiple distinct data sets. Do NOT use Examples for a single data set — inline values or expressions directly.
4. **Composite Steps:** Propose new composite steps for repeated action patterns.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
4. **Composite Steps:** Propose new composite steps for repeated action patterns.
4. **Composite Steps:** Create new composite steps for repeated action patterns.

?

- **Generate date**: `#{generateDate($period, $outputFormat)}` — e.g. `#{generateDate(P, yyyy-MM-dd)}` (today), `#{generateDate(P1D, yyyy-MM-dd)}` (tomorrow)
- **Fake data** (via DataFaker): `#{generate($Provider.$method)}` — e.g. `#{generate(Name.firstName)}`, `#{generate(Internet.emailAddress)}`, `#{generate(Address.fullAddress)}`
- **Pick random from list**: `#{anyOf($value1, $value2, $value3)}`
- **String transforms**: `#{toLowerCase($input)}`, `#{toUpperCase($input)}`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should be moved to MCP server

#### File 1: VIVIDUS Story
**Location**: `src/main/resources/story/generated/TC-XXXXX-[TestName]/[TestName].story`

**DO NOT create** any additional files (README, summary reports, documentation, etc.) — only the `.story` file.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about composite steps?

@requirementId [Requirement Id]
@feature [Feature]
@priority [0|1|2|3|4]
@priority [1|2|3|4]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
@priority [1|2|3|4]
@priority [1|2|3|4|5]


!-- [MISSING STEP] Comment for any gaps
!-- [ASSUMPTION] Comment for any assumptions made - REQUIRES VALIDATION
!-- [ASSUMPTION] Comment for any assumptions made REQUIRES VALIDATION
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀

| `@requirementId` | `REQ-XXXXX` | Linked requirement/user story ID |
| `@feature` | Feature name | Should match feature folder or test suite |
| `@priority` | `1` \| `2` \| `3` \| `4` \| `5` | 1=Blocker, 2=Critical, 3=Major, 4=Minor, 5=Trivial |
| `@priority` | `1` \| `2` \| `3` \| `4` | 1=Critical, 2=Major, 3=Minor, 4=Trivial |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 levels are available

**When to use visual testing**:
- ✅ Verifying page layout, structure, elements and their states (3+ elements)
- ❌ Single element verification after an action
- ❌ Dynamic content that changes frequently
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should it be extracted to another skill?

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/skills/generate-vividus-web-tests/SKILL.md (2)

221-229: ⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 223) to satisfy markdownlint rule MD031 (blanks-around-fences).

📝 Suggested fix
 ❌ **Bad** - waiting before every field (unnecessary):
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 221 - 229,
The Markdown in SKILL.md has a code fence immediately after text which violates
MD031; insert a single blank line before the opening code fence (the ```gherkin
block shown in the example) so there is an empty line between the preceding
paragraph and the code block, ensuring the Gherkin snippet is separated and
MD031 passes.

203-211: ⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 204) to satisfy markdownlint rule MD031 (blanks-around-fences).

📝 Suggested fix
 ✅ **Good** - wait for first interactive element after navigation:
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 203 - 211,
Add a blank line immediately before the opening Gherkin code fence (the sequence
```gherkin) in SKILL.md so the fence is separated by a blank line from the
preceding paragraph; locate the triple-backtick fence and insert one empty line
above it to satisfy markdownlint MD031.
♻️ Duplicate comments (7)
.github/skills/generate-vividus-web-tests/SKILL.md (7)

59-65: ⚠️ Potential issue | 🟡 Minor

Add blank line before table to fix markdownlint violation.

The table starting at line 60 needs a blank line before it to satisfy markdownlint rule MD058 (blanks-around-tables).

This issue was flagged in a previous review and remains unresolved.

📝 Suggested fix
 3. Flag with an `[ASSUMPTION]` inline comment in the story file
 
 Example assumptions:
+
 | Situation | Assumption Made |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 59 - 65, Add
a blank line immediately before the Markdown table that begins with the header
"| Situation | Assumption Made |" to satisfy markdownlint rule MD058
(blanks-around-tables); update SKILL.md by inserting an empty line above that
table so the table is separated from the preceding paragraph/content.

133-139: ⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 135) to satisfy markdownlint rule MD031 (blanks-around-fences). This was flagged in a previous review.

📝 Suggested fix
 ❌ **Bad** - hardcoded values:
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 133 - 139,
Add a blank line immediately before the opening code fence that contains the
Gherkin example (the triple backticks before the lines starting with "When I
enter `John`..." and the other two "When" lines) so the code block is preceded
by an empty line to satisfy markdownlint rule MD031; ensure the fence remains
labeled (e.g., ```gherkin) and that only a single empty line is inserted
directly above the fence.

97-99: 🧹 Nitpick | 🔵 Trivial

Consider making context7 MCP optional.

The current wording mandates context7 MCP ("MUST obtain additional VIVIDUS documentation"), but a previous reviewer suggested it should be optional. Since VIVIDUS MCP (line 94) is the primary source and context7 is supplementary for unclear syntax, consider changing this to "SHOULD" or "MAY" to allow agents to proceed when context7 is unavailable.

As per coding guidelines, addressing reviewer feedback: "I think context7 should be optional"

♻️ Suggested wording adjustment
-2. **MUST** obtain additional VIVIDUS documentation via **context7 MCP** when step syntax is unclear or additional capabilities need to be explored:
+2. **SHOULD** obtain additional VIVIDUS documentation via **context7 MCP** when step syntax is unclear or additional capabilities need to be explored (optional):
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 97 - 99, The
requirement in the SKILL.md clause that reads "MUST obtain additional VIVIDUS
documentation via context7 MCP" should be relaxed to make context7 optional;
update the phrase to use "SHOULD" or "MAY" (e.g., replace "MUST" with "SHOULD"
or "MAY") in the sentence that references "context7 MCP" and the two subsequent
bullet actions ("context7_resolve-library-id" and "context7_query-docs"), so
agents may proceed using VIVIDUS MCP as the primary source when context7 is
unavailable while still recommending context7 when step syntax is unclear.

85-85: ⚠️ Potential issue | 🟡 Minor

Add blank line before subheading.

The "Logic & Flow Planning" subheading needs a blank line before it to satisfy markdownlint rule MD022 (blanks-around-headings).

📝 Suggested fix
 ## Step 3: Analyze test case and map to VIVIDUS
 
 ### Logic & Flow Planning
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 85, Add a single
blank line immediately before the "Logic & Flow Planning" subheading in the
SKILL.md content so the markdown heading has a blank line above it (to satisfy
markdownlint MD022); locate the heading text "Logic & Flow Planning" and insert
one empty line directly above that line.

241-241: ⚠️ Potential issue | 🟡 Minor

Add blank line before subheading.

The "Output" subheading needs a blank line before it to satisfy markdownlint rule MD022 (blanks-around-headings).

📝 Suggested fix
 ## Step 5: Generate VIVIDUS story
 
 ### Output
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 241, Add a blank
line immediately before the "### Output" subheading (the line containing "###
Output") so the markdown has an empty line above that heading to satisfy MD022
(blanks-around-headings).

91-91: ⚠️ Potential issue | 🟡 Minor

Add blank line before subheading.

The "Discovery" subheading needs a blank line before it to satisfy markdownlint rule MD022 (blanks-around-headings).

📝 Suggested fix
 3. Check for specific negative scenarios: Ensure the test verifies the *fail state* (e.g., "Error message visible") and doesn't accidentally succeed if the error is missing.
 
 ### Discovery
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 91, Add a single
blank line immediately before the "### Discovery" subheading in the SKILL.md
content so the heading is separated from the previous paragraph and satisfies
markdownlint MD022; locate the literal heading "### Discovery" and insert one
blank line above it.

149-149: ⚠️ Potential issue | 🟡 Minor

Add blank line before subheading.

The "Locator Stability Hierarchy" subheading needs a blank line before it to satisfy markdownlint rule MD022 (blanks-around-headings).

📝 Suggested fix

Locator Stability Hierarchy

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 149, Add a single
blank line immediately before the "### Locator Stability Hierarchy" heading to
satisfy markdownlint MD022; locate the heading text "### Locator Stability
Hierarchy" in SKILL.md and insert one empty line above it so the subheading is
separated from the preceding paragraph or element.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/skills/generate-vividus-web-tests/SKILL.md:

  • Line 119: Update the guidance text under the "Composite Steps" bullet so it is
    directive: replace the sentence "Propose new composite steps for repeated action
    patterns." with "Create new composite steps for repeated action
    patterns."—locate the "Composite Steps" bullet in SKILL.md (the line currently
    reading the less-direct wording) and make the wording change so it reads as an
    expected action rather than a suggestion.
  • Line 247: Update the SKILL.md guidance to explicitly state that agents must
    not create any new files including composite step files (e.g., no new .steps
    files) and instead, if proposing reusable or composite steps, they should
    include them inline as clearly commented blocks within the single .story file
    (e.g., use a "COMPOSITE STEP:" comment header inside the .story) so reviewers
    can extract or refactor them later; reference the existing rule "DO NOT create
    any additional files — only the .story file" and add this clarification
    immediately after it to remove ambiguity about composite steps.
  • Around line 100-103: Move the two specific resource paths currently listed
    under the Discovery section (src/main/resources/story/**/*.story and
    src/main/resources/steps/*.steps) into the Instructions section of SKILL.md so
    Discovery remains tool-focused; remove those lines from the Discovery bullets
    and add a short "Project conventions" or "Resource paths" subsection under
    Instructions that lists those paths and a brief note about their purpose (e.g.,
    "existing stories" and "reusable composite steps"), and ensure the
    numbering/formatting in both sections is updated accordingly.
  • Line 11: The phrase "3. Analyze test case and map to VIVIDUS" is
    ambiguous; update that line to explicitly state the mapping target and action —
    e.g., change it to "3. Analyze test case and translate to VIVIDUS steps and
    syntax" or "3. Analyze test case and map to VIVIDUS steps/syntax" so it's
    clear whether you're converting to VIVIDUS steps, syntax, or capabilities;
    locate and edit the exact text "3. Analyze test case and map to VIVIDUS" in
    SKILL.md.
  • Around line 105-110: Update the Priority Rule wording to explicitly state
    operational precedence: change the sentence that currently says "Two sources of
    valid steps are allowed... composite steps defined in project .steps files —
    these take precedence, and (2) steps returned by VIVIDUS MCP" to a clear
    directive such as "When both a composite step from project .steps files and a
    step returned by VIVIDUS MCP can accomplish the same action, always prefer and
    use the composite step from the project .steps file; only use the MCP step if
    no equivalent composite exists." Ensure this replaces the existing priority
    sentence near the "Priority Rule" header and keep the surrounding strict rules
    (ONLY use steps from project .steps files OR VIVIDUS MCP results, Preserve
    exact syntax, mark [MISSING STEP]) intact.
  • Line 122: Insert a single blank line immediately before the subheading "###
    Use VIVIDUS Expressions Instead of Hardcoded Values" in SKILL.md so the heading
    is separated from the preceding content, satisfying markdownlint MD022; locate
    the exact heading text and add one empty line above it.
  • Around line 164-168: Add a blank line immediately before the Gherkin code
    fence so the snippet beginning with "gherkin" is preceded by an empty line to satisfy markdownlint MD031; update the SKILL.md section containing the Gherkin example (the block that starts with "When I wait until element located by `caseInsensitiveText(My Account)` appears") by inserting one blank line above the opening gherkin fence.
  • Around line 141-147: Add a blank line directly before the Gherkin code fence
    under the "✅ Good - generated values:" block so the triple-backtick fence
    that starts the code block is preceded by an empty line; update the SKILL.md
    section containing the sample Gherkin snippet (the block that begins with "When
    I enter #{generate(Name.firstName)} ...") by inserting one empty line before
    the opening ```gherkin fence to satisfy MD031.
  • Around line 213-219: Add a blank line immediately before the Gherkin code
    fence that begins with "gherkin" in SKILL.md so the code block is separated from the preceding paragraph (this satisfies markdownlint MD031); locate the fence shown with the snippet starting "gherkin" and insert a single empty
    line above it.
  • Around line 273-280: Add a blank line immediately before the code fence that
    starts with ```gherkin (the block containing the two Gherkin steps "When I click
    on element located by buttonName(Save)" and "When I wait until element located
    by `caseInsensitiveText(Success)` appears in `PT10S`") so the fence is separated
    by an empty line to satisfy markdownlint MD031.
  • Line 254: Update the @priority enumeration and its explanatory table to
    include level 5: change the tag instance @priority [1|2|3|4] to @priority [1|2|3|4|5] and update the table row that documents @priority to list 1 | 2 | 3 | 4 | 5 with the corresponding descriptions (add 5=Informational) so the
    docs reflect VIVIDUS's five priority levels.

Outside diff comments:
In @.github/skills/generate-vividus-web-tests/SKILL.md:

  • Around line 221-229: The Markdown in SKILL.md has a code fence immediately
    after text which violates MD031; insert a single blank line before the opening
    code fence (the ```gherkin block shown in the example) so there is an empty line
    between the preceding paragraph and the code block, ensuring the Gherkin snippet
    is separated and MD031 passes.
  • Around line 203-211: Add a blank line immediately before the opening Gherkin
    code fence (the sequence ```gherkin) in SKILL.md so the fence is separated by a
    blank line from the preceding paragraph; locate the triple-backtick fence and
    insert one empty line above it to satisfy markdownlint MD031.

Duplicate comments:
In @.github/skills/generate-vividus-web-tests/SKILL.md:

  • Around line 59-65: Add a blank line immediately before the Markdown table that
    begins with the header "| Situation | Assumption Made |" to satisfy markdownlint
    rule MD058 (blanks-around-tables); update SKILL.md by inserting an empty line
    above that table so the table is separated from the preceding paragraph/content.
  • Around line 133-139: Add a blank line immediately before the opening code
    fence that contains the Gherkin example (the triple backticks before the lines
    starting with "When I enter John..." and the other two "When" lines) so the
    code block is preceded by an empty line to satisfy markdownlint rule MD031;
    ensure the fence remains labeled (e.g., ```gherkin) and that only a single empty
    line is inserted directly above the fence.
  • Around line 97-99: The requirement in the SKILL.md clause that reads "MUST
    obtain additional VIVIDUS documentation via context7 MCP" should be relaxed to
    make context7 optional; update the phrase to use "SHOULD" or "MAY" (e.g.,
    replace "MUST" with "SHOULD" or "MAY") in the sentence that references "context7
    MCP" and the two subsequent bullet actions ("context7_resolve-library-id" and
    "context7_query-docs"), so agents may proceed using VIVIDUS MCP as the primary
    source when context7 is unavailable while still recommending context7 when step
    syntax is unclear.
  • Line 85: Add a single blank line immediately before the "Logic & Flow
    Planning" subheading in the SKILL.md content so the markdown heading has a blank
    line above it (to satisfy markdownlint MD022); locate the heading text "Logic &
    Flow Planning" and insert one empty line directly above that line.
  • Line 241: Add a blank line immediately before the "### Output" subheading (the
    line containing "### Output") so the markdown has an empty line above that
    heading to satisfy MD022 (blanks-around-headings).
  • Line 91: Add a single blank line immediately before the "### Discovery"
    subheading in the SKILL.md content so the heading is separated from the previous
    paragraph and satisfies markdownlint MD022; locate the literal heading "###
    Discovery" and insert one blank line above it.
  • Line 149: Add a single blank line immediately before the "### Locator
    Stability Hierarchy" heading to satisfy markdownlint MD022; locate the heading
    text "### Locator Stability Hierarchy" in SKILL.md and insert one empty line
    above it so the subheading is separated from the preceding paragraph or element.

</details>

<details>
<summary>🪄 Autofix (Beta)</summary>

Fix all unresolved CodeRabbit comments on this PR:

- [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended)
- [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: ASSERTIVE

**Plan**: Pro

**Run ID**: `c67af08a-0e64-41cf-954d-ff91bf57891f`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 89f2c9b14b305c02be1927eb148985e6600d3bfb and c0c723d64489cec55ea7d7e36d9152128fdbd4aa.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/skills/generate-vividus-web-tests/SKILL.md`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment thread .github/skills/generate-vividus-web-tests/SKILL.md Outdated
Comment on lines +100 to +103
3. **MUST** read existing resources to learn patterns and conventions:
- `src/main/resources/story/**/*.story` — existing stories
- `src/main/resources/steps/*.steps` — reusable composite steps
4. **MUST** review Lifecycle and Examples usage (transformers, data tables), scenario structure and naming, meta tags
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider moving file paths to instructions section.

A previous reviewer suggested moving the specific file paths (src/main/resources/story/**/*.story, src/main/resources/steps/*.steps) from the Discovery section to a separate instructions section for better organization. This would keep Discovery focused on tool usage while instructions detail project-specific patterns.

As per coding guidelines, addressing reviewer feedback: "I think the paths should be moved to instructions"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 100 - 103,
Move the two specific resource paths currently listed under the Discovery
section (`src/main/resources/story/**/*.story` and
`src/main/resources/steps/*.steps`) into the Instructions section of SKILL.md so
Discovery remains tool-focused; remove those lines from the Discovery bullets
and add a short "Project conventions" or "Resource paths" subsection under
Instructions that lists those paths and a brief note about their purpose (e.g.,
"existing stories" and "reusable composite steps"), and ensure the
numbering/formatting in both sections is updated accordingly.

Comment thread .github/skills/generate-vividus-web-tests/SKILL.md Outdated
1. **Locators:** Follow the **Locator Stability Hierarchy** below to ensure stability.
2. **Expressions:** Use VIVIDUS expressions instead of hardcoded dynamic values — see **Use VIVIDUS Expressions Instead of Hardcoded Values** below.
3. **Data Tables:** Use Examples blocks **only** when a scenario must run with multiple distinct data sets. Do NOT use Examples for a single data set — inline values or expressions directly.
4. **Composite Steps:** Propose new composite steps for repeated action patterns.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider rewording composite steps guidance.

A previous reviewer suggested alternative wording: "Composite Steps: Create new composite steps for repeated action patterns."

The current wording "Propose new composite steps" is less directive. Consider the suggested wording to make it clearer that creating composites is an expected action, not just a suggestion.

As per coding guidelines, addressing reviewer feedback at line 119.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 119, Update the
guidance text under the "Composite Steps" bullet so it is directive: replace the
sentence "Propose new composite steps for repeated action patterns." with
"Create new composite steps for repeated action patterns."—locate the "Composite
Steps" bullet in SKILL.md (the line currently reading the less-direct wording)
and make the wording change so it reads as an expected action rather than a
suggestion.

4. **Composite Steps:** Propose new composite steps for repeated action patterns.
5. **Contextual Steps:** When using parent element context, ensure child locators are relative.

### Use VIVIDUS Expressions Instead of Hardcoded Values
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before subheading.

The "Use VIVIDUS Expressions Instead of Hardcoded Values" subheading needs a blank line before it to satisfy markdownlint rule MD022 (blanks-around-headings).

📝 Suggested fix
 5. **Contextual Steps:** When using parent element context, ensure child locators are relative.
 
 ### Use VIVIDUS Expressions Instead of Hardcoded Values
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Use VIVIDUS Expressions Instead of Hardcoded Values
5. **Contextual Steps:** When using parent element context, ensure child locators are relative.
### Use VIVIDUS Expressions Instead of Hardcoded Values
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 122, Insert a
single blank line immediately before the subheading "### Use VIVIDUS Expressions
Instead of Hardcoded Values" in SKILL.md so the heading is separated from the
preceding content, satisfying markdownlint MD022; locate the exact heading text
and add one empty line above it.

Comment on lines +164 to 168

```gherkin
When I wait until element located by `caseInsensitiveText(My Account)` appears
Then text `My Account` exists
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 165) to satisfy markdownlint rule MD031 (blanks-around-fences).

📝 Suggested fix
 ❌ **Bad** - redundant check:
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 164 - 168,
Add a blank line immediately before the Gherkin code fence so the snippet
beginning with "```gherkin" is preceded by an empty line to satisfy markdownlint
MD031; update the SKILL.md section containing the Gherkin example (the block
that starts with "When I wait until element located by `caseInsensitiveText(My
Account)` appears") by inserting one blank line above the opening ```gherkin
fence.

Comment on lines 213 to 219
❌ **Bad** - no synchronization after navigation:

```gherkin
When I click on element located by `buttonName(Add Product)`
!-- Missing wait - next step may fail if page hasn't loaded
When I enter `${campaignName}` in field located by `xpath(//input[@name='name'])`
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 215) to satisfy markdownlint rule MD031 (blanks-around-fences).

📝 Suggested fix
 ❌ **Bad** - no synchronization after navigation:
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 213 - 219,
Add a blank line immediately before the Gherkin code fence that begins with
"```gherkin" in SKILL.md so the code block is separated from the preceding
paragraph (this satisfies markdownlint MD031); locate the fence shown with the
snippet starting "```gherkin" and insert a single empty line above it.

Comment thread .github/skills/generate-vividus-web-tests/SKILL.md Outdated
@requirementId [Requirement Id]
@feature [Feature]
@priority [0|1|2|3|4]
@priority [1|2|3|4]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Find all priority values used in existing VIVIDUS stories

# Search for `@priority` tags in story files and extract the values
rg -oN '@priority\s+\d+' --glob '*.story' | sort -u

Repository: vividus-framework/vividus-sample-tests

Length of output: 64


🏁 Script executed:

cat -n .github/skills/generate-vividus-web-tests/SKILL.md | sed -n '250,275p'

Repository: vividus-framework/vividus-sample-tests

Length of output: 1112


🏁 Script executed:

rg -i 'priority' .github/skills/generate-vividus-web-tests/SKILL.md -A 2 -B 2

Repository: vividus-framework/vividus-sample-tests

Length of output: 919


🏁 Script executed:

fd -type f -name '*.md' | xargs rg -l 'priority.*level' -i

Repository: vividus-framework/vividus-sample-tests

Length of output: 255


🏁 Script executed:

rg -i 'priority.*[5-9]|level.*5|highest|lowest' . -t md -t txt --max-count 20

Repository: vividus-framework/vividus-sample-tests

Length of output: 64


🌐 Web query:

VIVIDUS framework priority levels @priority meta tag documentation

💡 Result:

The VIVIDUS framework uses the @priority meta tag to assign priority levels to stories and scenarios for reporting purposes, specifically to view the distribution of tests by priorities in the generated report's Graphs tab. Priority levels are numeric values in the range 1-5, where typically the smallest number (1) indicates the most important test, and the highest number (5) indicates the least important one. Usage example: Meta: @priority 1 Note: The older @severity meta tag served the same purpose but is deprecated and scheduled for removal in VIVIDUS 0.7.0; users should migrate to @priority. This meta tag can be placed at the story or scenario level. After running tests, the priority distribution appears in the report under the Graphs tab. There is a separate mechanism for story execution prioritization using a different meta tag like @story_priority, configurable via Spring bean, but the queried @priority is specifically for reporting.

Citations:


🌐 Web query:

VIVIDUS @priority 5 definition name "trivial" "informational"

💡 Result:

In VIVIDUS test automation framework, @priority 5 with names "trivial" and "informational" likely refers to the priority level configuration for known issues (configured in known-issues.json). Priority 5 is the lowest level, corresponding to "trivial" issues that are purely informational and do not impact test execution significantly. Known issues at this level are matched by assertion patterns and treated as non-failing by default unless configured otherwise (via CLI flags like --treatKnownIssuesAsPassed or build.gradle properties). Examples from docs show known issues labeled like VVD-5 with low priority patterns for minor assertions.

Citations:


🌐 Web query:

VIVIDUS @priority meta tag levels 1 2 3 4 5 critical major minor trivial informational

💡 Result:

In VIVIDUS, the @priority meta tag is used at the story or scenario level to mark the importance of tests for reporting purposes, specifically to view the distribution of tests by priorities in the Graphs tab of the report. @severity is deprecated in favor of @priority since VIVIDUS 0.7.0. Allowed values: Numeric values in the range 1-5, where typically the smallest number (1) indicates the most important test, and the highest number (5) indicates the least important one. Examples: - @priority 1 (highest importance) - @priority 2 - @priority 3 - @priority 4 - @priority 5 (lowest importance) No official mapping to qualitative labels like critical, major, minor, trivial, informational is documented in the sources. These terms appear in general software testing contexts but are not explicitly linked to VIVIDUS priority levels. Users may conventionally map them as: - 1: critical - 2: major - 3: minor - 4: trivial - 5: informational A separate story_priority meta can be used for execution order prioritization (higher number starts first), but that's distinct from @priority for reporting.

Citations:


Update priority levels to include level 5.

The priority tag currently shows only 4 levels [1|2|3|4], but VIVIDUS supports 5 priority levels (1–5) for test distribution reporting. Line 254 and line 270 both need updating:

  • Line 254: Change @priority [1|2|3|4] to @priority [1|2|3|4|5]
  • Line 270: Add level 5 to the table: | @priority|1\|2\|3\|4\|5 | 1=Critical, 2=Major, 3=Minor, 4=Trivial, 5=Informational |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md at line 254, Update the
`@priority` enumeration and its explanatory table to include level 5: change the
tag instance `@priority [1|2|3|4]` to `@priority [1|2|3|4|5]` and update the
table row that documents `@priority` to list `1 | 2 | 3 | 4 | 5` with the
corresponding descriptions (add `5=Informational`) so the docs reflect VIVIDUS's
five priority levels.

Comment on lines +273 to 280

```gherkin
!-- [ASSUMPTION] TC step said "click submit" but button text is "Save" - using "Save"
When I click on element located by `xpath(//button[text()='Save'])`
!-- [ASSUMPTION] TC step said "click submit" but button text is "Save" using "Save"
When I click on element located by `buttonName(Save)`

!-- [ASSUMPTION] TC doesn't specify wait time, assuming 10 seconds max
When I wait until element located by `caseInsensitiveText(Success)` appears in `PT10S`
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add blank line before code block.

A blank line is needed before the code fence (line 274) to satisfy markdownlint rule MD031 (blanks-around-fences).

📝 Suggested fix
 **Assumption Comments in Story:**
 
 ```gherkin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/skills/generate-vividus-web-tests/SKILL.md around lines 273 - 280,
Add a blank line immediately before the code fence that starts with ```gherkin
(the block containing the two Gherkin steps "When I click on element located by
`buttonName(Save)`" and "When I wait until element located by
`caseInsensitiveText(Success)` appears in `PT10S`") so the fence is separated by
an empty line to satisfy markdownlint MD031.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants