Prompt: Interactive Recipe Page (FPC002)
Model: Groq-Llama4-Scout | Date: 07/16/2025 | Page Title: Chocolate Lava Cakes
Prompt Description
Create a feature-rich, responsive webpage for a recipe (e.g., 'Chocolate Lava Cakes'). The page should be highly interactive and user-friendly.
**Page Structure & Content:**
1. **Recipe Header:**
* Recipe Name (H1, identifiable as `data-testid='recipe-title'`).
* A captivating image of the dish (ensure proper `alt` text).
* Brief description, prep time, cook time, servings (e.g., 'Serves 4').
2. **Ingredients Section:**
* A list of ingredients. Each ingredient should be a list item (`<li>`).
* **Interactivity:** Allow users to check off ingredients as they gather them. Each `<li>` should contain a checkbox. Checking it should visually indicate completion (e.g., strikethrough text) and this state should be clearly communicated (e.g., `aria-checked` or a similar pattern for custom checkboxes).
* The ingredients list container should be identifiable as `data-testid='ingredients-list'`.
3. **Instructions Section:**
* Numbered steps for the recipe.
* **Interactivity:** 'Timer' feature. For steps mentioning a time (e.g., 'Bake for 12-15 minutes'), include a small button next to the step (identifiable as `data-testid='timer-btn-stepX'`) that, when clicked, starts a countdown timer displayed on the page (identifiable as `data-testid='recipe-timer-display'`). The timer should visually update and provide an alert/notification when finished. Multiple timers should not interfere if started.
4. **Nutrition Information (Optional but good for TQ):**
* A simple table displaying basic nutrition facts (calories, protein, fat, carbs).
5. **User Reviews/Comments (Structure Only):**
* A section placeholder for user reviews, including a form to submit a new review (Name, Rating (1-5 stars - make these interactive, perhaps SVGs or radio buttons styled as stars), Comment).
* The review submission form should be `data-testid='review-form'`.
**Technical & Accessibility Requirements:**
* Full semantic HTML structure (header, main, article/section, aside (for nutrition?), footer).
* Responsive design ensuring readability and usability on all devices. The ingredients list and instructions must be easy to follow on mobile.
* All interactive elements (checkboxes, timer buttons, star ratings) MUST be fully keyboard accessible and provide clear visual feedback and ARIA states.
* The timer functionality requires JavaScript for countdown logic and notifications.
* If using Tailwind, supplement with custom CSS/JS for the interactive elements like the timer display, ingredient strikethrough, and star rating to ensure they meet the described UX and A11y.
* The page should be well-organized and visually appealing.
**Testing Identifiers:**
* Recipe Title: `data-testid='recipe-title'`
* Ingredients List: `data-testid='ingredients-list'`
* Timer Button (example for step 1): `data-testid='timer-btn-step1'`
* Timer Display Area: `data-testid='recipe-timer-display'`
* Review Submission Form: `data-testid='review-form'`
Key Links & Info
Analysis Timestamp: 07/16/2025 17:53:09
Scores for this Prompt
Technical Quality
35.0 / 110.0
(31.82%)
Prompt Adherence
24.0 / 26.0
(92.31%)
Overall Weighted
74.16 %
Technical Quality Breakdown
HTML Structure & Semantics (7.0 / 10.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| HTML Lang | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Page Title | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Main Tag | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Nav Tag | WARN |
No visible <nav>.
|
0.0 / 1.0 | desktop |
| Footer Tag | PASS |
PASS
|
1.0 / 1.0 | desktop |
| H1 Count | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Heading Order Logic | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Image Alts | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Form Labels | FAIL |
4 inputs unlabeled.
{
"unlabeled_count": 4
}
|
0.0 / 2.0 | desktop |
CSS Quality (2.0 / 5.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| CSS Variables | WARN |
No :root CSS variables.
|
0.0 / 2.0 | desktop |
| Modern Layout Body/Main | INFO |
Flex/Grid not on body/main.
|
0.0 / 1.0 | desktop |
| Inline Styles | PASS |
Minimal inline styles.
|
1.0 / 1.0 | desktop |
| !important Usage | PASS |
No !important in <style> tags.
|
1.0 / 1.0 | desktop |
JavaScript Health (0.0 / 5.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| JS Console Errors | FAIL |
2 JS error(s).
[ "JS ERROR: file:///Users/jma345/Tesslate/UIGenEval/v4/all_code_outputs/fullpage_challenge/Groq-Llama4-Scout/chocolate-lava-cakes.jpg - Failed to load resource: net::ERR_FILE_NOT_FOUND", "JS ERROR: file:///Users/jma345/Tesslate/UIGenEval/v4/all_code_outputs/fullpage_challenge/Groq-Llama4-Scout/FPC002_Interactive_Recipe_Page.html 140:98 Uncaught SyntaxError: Invalid or unexpected token" ] |
0.0 / 5.0 | desktop |
Accessibility (Axe-core) (10.0 / 40.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Axe Violations | FAIL |
2 Axe violations (Crit:1,Ser:1,Mod:0,Min:0). Report: axe_report_FPC002_Interactive_Recipe_Page_desktop.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Form elements must have labels",
"id": "label",
"impact": "critical"
}
]
|
5.0 / 20.0 | desktop |
| Axe Violations | FAIL |
2 Axe violations (Crit:1,Ser:1,Mod:0,Min:0). Report: axe_report_FPC002_Interactive_Recipe_Page_mobile.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Form elements must have labels",
"id": "label",
"impact": "critical"
}
]
|
5.0 / 20.0 | mobile |
Rendered Color & Contrast (0.0 / 30.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step1' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step2' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step3' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step4' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Submit Review' in <button class='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Submit Review"
}
|
0.0 / 0.0 | desktop |
| Contrast Check Result | FAIL |
10 WCAG AA failures on 37 instances.
|
0.0 / 15.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step1' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step2' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step3' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step4' class='ml-2 bg-blue-500 hover:bg-blue...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 1.61 for '★' in <label>
{
"bg_eff": "rgb(255, 255, 255)",
"fg": "rgb(204, 204, 204)",
"ratio": 1.6059285649300714,
"text": "\u2605"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Submit Review' in <button class='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Submit Review"
}
|
0.0 / 0.0 | mobile |
| Contrast Check Result | FAIL |
10 WCAG AA failures on 37 instances.
|
0.0 / 15.0 | mobile |
Responsiveness (Viewport & Scroll) (16.0 / 20.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Viewport Meta Tag | PASS |
Configured correctly for responsiveness.
|
4.0 / 4.0 | desktop |
| Horizontal Scrollbar | PASS |
No horizontal scrollbar detected.
|
6.0 / 6.0 | desktop |
| Viewport Meta Tag | INFO |
Already scored for this prompt.
|
0.0 / 0.0 | mobile |
| Horizontal Scrollbar | PASS |
No horizontal scrollbar detected.
|
6.0 / 6.0 | mobile |
Prompt Adherence Breakdown
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Recipe Title | PASS |
Element 'h1[data-testid='recipe-title']' present and visible.
Selector:
h1[data-testid='recipe-title'] |
2.0 / 2.0 | desktop |
| Ingredients List | PASS |
Element '[data-testid='ingredients-list']' present and visible.
Selector:
[data-testid='ingredients-list'] |
2.0 / 2.0 | desktop |
| Ingredients Items (min 3) | PASS |
Count is 4 (Actual: 4, Expected: >= 3).
|
2.0 / 2.0 | desktop |
| Example Timer Button | PASS |
Element '[data-testid^='timer-btn-step']' present and visible.
Selector:
[data-testid^='timer-btn-step'] |
2.0 / 2.0 | desktop |
| Timer Display Area | FAIL |
Element '[data-testid='recipe-timer-display']' present but NOT visible.
Selector:
[data-testid='recipe-timer-display'] |
0.0 / 2.0 | desktop |
| Review Form | PASS |
Element 'form[data-testid='review-form']' present and visible.
Selector:
form[data-testid='review-form'] |
2.0 / 2.0 | desktop |
| Ingredient Check Off | PASS |
All interaction steps/outcomes verified.
|
5.0 / 5.0 | desktop |
| Timer Starts and Updates (Visual check of display) | PASS |
All interaction steps/outcomes verified.
|
6.0 / 6.0 | desktop |
| Star Rating is Interactive (basic check) | PASS |
Custom script evaluation result: True (expected true).
Script Eval: True
|
3.0 / 3.0 | desktop |
| Recipe Title | PASS |
(Points already awarded) Element 'h1[data-testid='recipe-title']' present and visible.
Selector:
h1[data-testid='recipe-title'] |
0.0 / 2.0 | mobile |
| Ingredients List | PASS |
(Points already awarded) Element '[data-testid='ingredients-list']' present and visible.
Selector:
[data-testid='ingredients-list'] |
0.0 / 2.0 | mobile |
| Ingredients Items (min 3) | PASS |
(Points already awarded) Count is 4 (Actual: 4, Expected: >= 3).
|
0.0 / 2.0 | mobile |
| Example Timer Button | PASS |
(Points already awarded) Element '[data-testid^='timer-btn-step']' present and visible.
Selector:
[data-testid^='timer-btn-step'] |
0.0 / 2.0 | mobile |
| Timer Display Area | FAIL |
Element '[data-testid='recipe-timer-display']' present but NOT visible.
Selector:
[data-testid='recipe-timer-display'] |
0.0 / 2.0 | mobile |
| Review Form | PASS |
(Points already awarded) Element 'form[data-testid='review-form']' present and visible.
Selector:
form[data-testid='review-form'] |
0.0 / 2.0 | mobile |
| Ingredient Check Off | PASS |
(Points already awarded) All interaction steps/outcomes verified.
|
0.0 / 5.0 | mobile |
| Timer Starts and Updates (Visual check of display) | PASS |
(Points already awarded) All interaction steps/outcomes verified.
|
0.0 / 6.0 | mobile |
| Star Rating is Interactive (basic check) | PASS |
(Points already awarded) Custom script evaluation result: True (expected true).
Script Eval: True
|
0.0 / 3.0 | mobile |