{"id":"87ec7763-72b9-4dd2-b0fd-b0482d816c86","shortId":"G4tBQ8","kind":"skill","title":"423-frameworks-quarkus-testing-acceptance-tests","tagline":"Use when you need to implement acceptance tests from a Gherkin .feature file for Quarkus applications — including @acceptance scenarios, @QuarkusTest, BaseAcceptanceTest with QuarkusTestResourceLifecycleManager for Testcontainers and WireMock, REST Assured for full HTTP pipeline ","description":"# Quarkus acceptance tests from Gherkin\n\nImplement happy-path acceptance tests from Gherkin for Quarkus using real HTTP and infrastructure.\n\n**What is covered in this Skill?**\n\n- Preconditions: .feature file in context; Quarkus project confirmed\n- Parsing and filtering scenarios tagged @acceptance / @acceptance-tests\n- BaseAcceptanceTest with @QuarkusTest, @QuarkusTestResource, and QuarkusTestResourceLifecycleManager for:\n  - Testcontainers (PostgreSQL, Kafka) with dynamic config injection on startup\n  - WireMock with wireMockServer.resetAll() in @BeforeEach to isolate stubs\n- Concrete acceptance test class extending BaseAcceptanceTest:\n  - @DisplayName mirroring the Gherkin scenario title\n  - Given (stubs + fixtures) / When (REST Assured HTTP call) / Then (response assertions + wireMock.verify)\n- WireMock JSON mapping files under classpath:wiremock/mappings/ with body files under __files/\n- Naming convention: *AT suffix for Failsafe; never *Test (Surefire) or *AcceptanceTest\n- Maven three-tier split: *Test → Surefire, *IT + *AT → Failsafe\n- Happy-path scope by default; escalate to negatives only when explicitly requested\n\n**Scope:** Apply recommendations based on the reference rules and step workflow.\n\n## Constraints\n\nDo not generate without a .feature file; compile before and verify after.\n\n- **PRECONDITION**: Gherkin `.feature` file must be in context — stop and ask if not provided\n- **PRECONDITION**: The project must use Quarkus — direct the user to @133 or @323 otherwise\n- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change\n- **PREREQUISITE**: Project must compile successfully before generating acceptance test scaffolding\n- **BLOCKING CONDITION**: Compilation errors must be resolved by the user before proceeding\n- **NO EXCEPTIONS**: Do not generate tests if the project fails to compile or the feature file is missing\n- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements\n- **BEFORE APPLYING**: Read the reference for detailed steps and safeguards\n\n## When to use this skill\n\n- Implement Quarkus acceptance tests from a Gherkin feature file\n- Set up BaseAcceptanceTest with Testcontainers and WireMock for Quarkus\n- Create WireMock JSON mapping files for external HTTP stubs in Quarkus acceptance tests\n- Configure Maven *AT naming convention and Failsafe plugin for Quarkus acceptance tests\n\n## Workflow\n\n1. **Read reference and assess project context**\n\nRead `references/423-frameworks-quarkus-testing-acceptance-tests.md` and inspect the current project setup before proposing changes.\n\n2. **Gather scope and decide target improvements**\n\nIdentify requested outcomes, constraints, and the minimum safe set of changes to apply.\n\n3. **Apply framework-aligned changes**\n\nImplement or refactor configuration/code following the reference patterns and project conventions.\n\n4. **Run verification and report results**\n\nExecute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/423-frameworks-quarkus-testing-acceptance-tests.md](references/423-frameworks-quarkus-testing-acceptance-tests.md).","tags":["423","frameworks","quarkus","testing","acceptance","tests","cursor","rules","java","jabrena","agent-skills","ai-skills"],"capabilities":["skill","source-jabrena","skill-423-frameworks-quarkus-testing-acceptance-tests","topic-agent-skills","topic-ai-skills","topic-claude","topic-claude-code","topic-claude-code-skills","topic-claude-code-subagents","topic-claude-skills","topic-cursor-agent","topic-cursor-ai","topic-cursor-skills","topic-cursorai","topic-github-copilot"],"categories":["cursor-rules-java"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jabrena/cursor-rules-java/423-frameworks-quarkus-testing-acceptance-tests","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jabrena/cursor-rules-java","source_repo":"https://github.com/jabrena/cursor-rules-java","install_from":"skills.sh"}},"qualityScore":"0.631","qualityRationale":"deterministic score 0.63 from registry signals: · indexed on github topic:agent-skills · 362 github stars · SKILL.md body (3,216 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-26T12:53:38.491Z","embedding":null,"createdAt":"2026-04-18T22:02:23.317Z","updatedAt":"2026-04-26T12:53:38.491Z","lastSeenAt":"2026-04-26T12:53:38.491Z","tsv":"'/mvnw':232,283 '1':352 '133':226 '2':370 '3':390 '323':228 '4':407 '423':1 'accept':6,14,25,42,50,80,82,109,248,310,337,349 'acceptance-test':81 'acceptancetest':154 'action':428 'align':394 'appli':179,238,291,294,389,391 'applic':23 'appropri':414 'ask':212 'assert':130 'assess':356 'assur':36,125 'base':181 'baseacceptancetest':28,84,113,319 'beforeeach':104 'block':251 'bodi':140 'build/tests':415 'call':127 'chang':240,369,387,395,419 'class':111 'classpath':137 'clean':284,288 'compil':197,233,236,244,253,274 'concret':108 'condit':252 'config':96 'configur':339 'configuration/code':399 'confirm':74 'constraint':189,380,435 'context':71,209,358 'convent':145,343,406 'cover':63 'creat':326 'current':364 'decid':374 'default':170 'detail':299,431 'direct':222 'displaynam':114 'dynam':95 'error':254 'escal':171 'exampl':433 'except':264 'execut':413 'explicit':176 'extend':112 'extern':332 'fail':272 'failsaf':149,164,345 'featur':19,68,195,204,277,315 'file':20,69,135,141,143,196,205,278,316,330 'filter':77 'fixtur':122 'follow':400,426 'follow-up':425 'framework':3,393 'framework-align':392 'frameworks-quarkus-testing-acceptance-test':2 'full':38 'gather':371 'generat':192,247,267 'gherkin':18,45,53,117,203,314 'given':120 'guidanc':432 'happi':48,166 'happy-path':47,165 'http':39,58,126,333 'identifi':377 'implement':13,46,308,396 'improv':292,376 'includ':24 'infrastructur':60 'inject':97 'inspect':362 'isol':106 'json':133,328 'kafka':93 'mandatori':230 'map':134,329 'maven':155,340 'minimum':383 'mirror':115 'miss':280 'must':206,219,243,255 'mvn':235,287 'name':144,342 'need':11 'negat':173 'never':150 'otherwis':229 'outcom':379 'pars':75 'path':49,167 'pattern':403 'pipelin':40 'plugin':346 'postgresql':92 'precondit':67,202,216 'prerequisit':241 'proceed':262 'project':73,218,242,271,357,365,405 'propos':368 'provid':215 'quarkus':4,22,41,55,72,221,309,325,336,348 'quarkustest':27,86 'quarkustestresourc':87 'quarkustestresourcelifecyclemanag':30,89 'read':295,353,359 'real':57 'recommend':180 'refactor':398 'refer':184,297,354,402,429 'references/423-frameworks-quarkus-testing-acceptance-tests.md':360,437,438 'report':411 'request':177,378 'resolv':257 'respons':129 'rest':35,124 'result':412 'rule':185 'run':231,282,408 'safe':384 'safeguard':302 'scaffold':250 'scenario':26,78,118 'scope':168,178,372 'see':436 'set':317,385 'setup':366 'skill':66,307 'skill-423-frameworks-quarkus-testing-acceptance-tests' 'source-jabrena' 'split':159 'startup':99 'step':187,300 'stop':210 'stub':107,121,334 'success':245 'suffix':147 'summar':417 'surefir':152,161 'tag':79 'target':375 'test':5,7,15,43,51,83,110,151,160,249,268,311,338,350 'testcontain':32,91,321 'three':157 'three-tier':156 'tier':158 'titl':119 'topic-agent-skills' 'topic-ai-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-code-skills' 'topic-claude-code-subagents' 'topic-claude-skills' 'topic-cursor-agent' 'topic-cursor-ai' 'topic-cursor-skills' 'topic-cursorai' 'topic-github-copilot' 'use':8,56,220,305 'user':224,260 'verif':409 'verifi':200,281,285,289,422 'wiremock':34,100,132,323,327 'wiremock.verify':131 'wiremock/mappings':138 'wiremockserver.resetall':102 'without':193 'workflow':188,351","prices":[{"id":"8e48f4b3-f5fc-4bc9-a400-fd14a7a60657","listingId":"87ec7763-72b9-4dd2-b0fd-b0482d816c86","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jabrena","category":"cursor-rules-java","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:23.317Z"}],"sources":[{"listingId":"87ec7763-72b9-4dd2-b0fd-b0482d816c86","source":"github","sourceId":"jabrena/cursor-rules-java/423-frameworks-quarkus-testing-acceptance-tests","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/423-frameworks-quarkus-testing-acceptance-tests","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:23.317Z","lastSeenAt":"2026-04-26T12:53:38.491Z"}],"details":{"listingId":"87ec7763-72b9-4dd2-b0fd-b0482d816c86","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"423-frameworks-quarkus-testing-acceptance-tests","github":{"repo":"jabrena/cursor-rules-java","stars":362,"topics":["agent-skills","ai-skills","claude","claude-code","claude-code-skills","claude-code-subagents","claude-skills","cursor-agent","cursor-ai","cursor-skills","cursorai","github-copilot","intellij-idea","java","prompting","system-prompts"],"license":"apache-2.0","html_url":"https://github.com/jabrena/cursor-rules-java","pushed_at":"2026-04-26T12:50:01Z","description":"A curated and opinionated collection of Skills and Agents to be used in modern SDLC workflows for Java Enterprise development with your favorite AI Agent harness.","skill_md_sha":"6af3dfc9e189722113757886d3859a66785e7ea9","skill_md_path":"skills/423-frameworks-quarkus-testing-acceptance-tests/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/423-frameworks-quarkus-testing-acceptance-tests"},"layout":"multi","source":"github","category":"cursor-rules-java","frontmatter":{"name":"423-frameworks-quarkus-testing-acceptance-tests","license":"Apache-2.0","description":"Use when you need to implement acceptance tests from a Gherkin .feature file for Quarkus applications — including @acceptance scenarios, @QuarkusTest, BaseAcceptanceTest with QuarkusTestResourceLifecycleManager for Testcontainers and WireMock, REST Assured for full HTTP pipeline testing, WireMock JSON mapping files (classpath:wiremock/mappings/), *AT suffix naming, and Maven Surefire/Failsafe three-tier split. Requires the .feature file in context. This should trigger for requests such as Implement Quarkus acceptance tests from a Gherkin feature file; Set up BaseAcceptanceTest with Testcontainers and WireMock for Quarkus; Create WireMock JSON mapping files for external HTTP stubs in Quarkus acceptance tests; Configure Maven *AT naming convention and Failsafe plugin for Quarkus acceptance tests. Part of cursor-rules-java project"},"skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/423-frameworks-quarkus-testing-acceptance-tests"},"updatedAt":"2026-04-26T12:53:38.491Z"}}