AI Unified Process plugin for the Vaadin/jOOQ stack
86
91%
Does it follow best practices?
Impact
86%
1.10xAverage score across 13 eval scenarios
Low
Low-risk findings worth noting
Browserless test setup and test authoring
Correct groupId
100%
100%
Correct artifactId
0%
100%
Test scope
40%
100%
UseCase annotation exists
0%
100%
UseCase @Target METHOD
0%
100%
UseCase @Retention RUNTIME
0%
100%
UseCase @Documented
0%
100%
UseCase id attribute
0%
100%
UseCase scenario attribute
0%
100%
UseCase businessRules attribute
0%
100%
Test class name
0%
100%
Extends SpringBrowserlessTest
0%
100%
@SpringBootTest on class
0%
100%
@UseCase on each test method
0%
100%
Uses $view() or $() for component lookup
0%
100%
No Mockito usage
0%
100%
No @Transactional in test
100%
100%
Test data via Flyway
60%
80%
AssertJ assertions
0%
100%
Playwright end-to-end test automating a multi-use-case test case (TC-001)
Extends AbstractBasePlaywrightIT
100%
100%
@SpringBootTest RANDOM_PORT
100%
100%
Single test method for the whole flow
100%
100%
Step methods traceable to Flow rows
100%
100%
Test case ID in @DisplayName
0%
100%
getView returns first Flow step route
0%
100%
Navigates to the second view mid-flow
100%
100%
Test Data values used verbatim
100%
100%
Validation section asserted
100%
100%
No raw page.locator() calls
100%
100%
No Thread.sleep / waitForTimeout
100%
100%
Scoped lookups inside dialogs
100%
100%
Idempotent cleanup of test-created data only
62%
25%
Test class naming convention
100%
100%
Playwright tests using Drama Finder element wrappers
Extends AbstractBasePlaywrightIT
100%
100%
@SpringBootTest RANDOM_PORT
100%
100%
No raw page.locator() calls
100%
100%
Drama Finder element wrappers used
100%
100%
ARIA/label-based lookups
100%
100%
No XPath selectors
100%
100%
No Thread.sleep / waitForTimeout
100%
100%
No getAttribute/isVisible in assertions
100%
100%
getTotalRowCount for grid count
100%
100%
@Nested with @DisplayName
100%
100%
Scoped lookup inside dialog
100%
100%
Validation assertion uses assertInvalid
100%
100%
Test class naming convention
100%
100%
Playwright end-to-end journey test for a patient-intake test case with scoped-label and cleanup-order traps
Extends AbstractBasePlaywrightIT
87%
100%
Single test method for the whole journey
100%
100%
Flow order and step traceability
100%
100%
Test case ID in @DisplayName
0%
100%
Dialog 'Name' field scoped, not the page filter
100%
100%
Test Data values used verbatim
100%
100%
DatePickerElement for Birth Date
100%
100%
Navigates between the two views mid-flow
75%
100%
Validation section asserted
100%
100%
Cleanup deletes appointment before patient
87%
100%
No raw page.locator() calls
100%
100%
No Thread.sleep / waitForTimeout
83%
100%
getTotalRowCount for grid counts
50%
100%
Test class naming convention
100%
100%
Flyway migration extension with sequences and FKs
Reservation file naming
100%
100%
Payment file naming
100%
100%
Version follows existing migrations
100%
100%
Reservation sequence
100%
100%
Payment sequence
100%
100%
Reservation uses sequence PK
100%
100%
Payment uses sequence PK
100%
100%
Reservation FK to guest
100%
100%
Reservation FK to room_type
100%
100%
Payment FK to reservation
100%
100%
No DROP TABLE statements
100%
100%
Dependency order respected
100%
100%
Extend Karibu test suite for archive use case
Karibu class naming
100%
100%
@UseCase on main scenario
100%
100%
@UseCase on A1 flow
100%
100%
LocatorJ usage
100%
100%
GridKt usage
90%
100%
expectNotifications usage
100%
100%
No Mockito
100%
100%
No @Transactional
100%
100%
@AfterEach scope
62%
100%
UI.getCurrent().navigate
100%
100%
Flyway migration from entity model
No auto-increment PKs
100%
0%
Sequences created
0%
0%
Sequence naming: room_type
0%
0%
Sequence naming: guest
0%
0%
Sequence naming: reservation
0%
0%
File naming convention
100%
100%
Next version is V002
100%
100%
Foreign key: room_type_id
100%
100%
Foreign key: guest_id
100%
100%
Table dependency order
100%
100%
No DROP TABLE
100%
100%
Browserless tests for ConfirmDialog and ContextMenu overlay interactions
Extends SpringBrowserlessTest
0%
0%
@SpringBootTest annotation
0%
0%
Class naming convention
100%
100%
@UseCase on test methods
25%
100%
@UseCase scenario matches spec
0%
100%
ConfirmDialog found with $()
100%
100%
confirm() used for confirmation
80%
100%
cancel() used for cancel flow
87%
100%
reject() used for archive flow
87%
100%
ContextMenu via tester methods
0%
30%
No Karibu imports
100%
100%
No Mockito usage
100%
100%
jOOQ Records.mapping vs fetchInto in Vaadin data layer
Records.mapping() for grid query
100%
100%
No fetchInto for projected DTO
100%
100%
Column order matches DTO constructor
100%
100%
fetchInto(Order.class) for full-row
100%
100%
No test class created
100%
100%
Data layer separate from view
100%
100%
Vaadin view exists
100%
100%
View wired to repository
100%
100%
Item count in projection
100%
100%
jOOQ projected query with Records.mapping()
Records.mapping() for projection
100%
100%
Constructor reference style
100%
100%
Column order matches constructor
100%
100%
Item count via aggregate
100%
100%
fetchInto for full-row fetch
100%
100%
No fetchInto for projected query
100%
100%
Sorted descending by created_at
100%
100%
No test classes created
100%
100%
Hilla React view with @BrowserCallable service over jOOQ
@BrowserCallable service delegating to repository
100%
100%
Records.mapping() for grid query
100%
100%
React view under src/main/frontend/views/
100%
100%
View uses generated TypeScript client
100%
100%
No fetchInto for projected DTO
100%
100%
Column order matches DTO constructor
100%
100%
No test class created
100%
100%
fetchInto(Product.class) for full-row
100%
100%
Data layer separate from service and view
100%
100%
Playwright tests with scoped lookups and grid row count
No raw locators
100%
0%
Scoped dialog lookup
100%
0%
getTotalRowCount for grid count
100%
0%
No Thread.sleep / waitForTimeout
100%
0%
No getAttribute / isVisible in assertions
100%
0%
@Nested with @DisplayName
0%
0%
AbstractBasePlaywrightIT base class
100%
0%
@SpringBootTest annotation
57%
0%
getLocator vs getInputLocator distinction
100%
0%
Icon-only button via getByText
100%
0%
Drama Finder element wrappers
100%
0%
Test class naming convention
100%
0%
Browserless test authoring for Vaadin view
UseCase annotation created
14%
100%
UseCase annotation shape
100%
100%
Test class name pattern
0%
100%
Extends SpringBrowserlessTest
0%
100%
@SpringBootTest annotation
0%
100%
@UseCase on every test method
37%
100%
@UseCase scenario matches spec
0%
100%
@UseCase businessRules matches spec
0%
100%
$() used to find components
0%
100%
test() used for actions only
0%
55%
AssertJ assertions
100%
100%
No Mockito
0%
100%
No @Transactional
100%
100%
Flyway test migration file
88%
100%
Table of Contents