Prompt: Interactive Recipe Page (FPC002)
Model: Groq-Gemma2-9b | 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:46:04
Scores for this Prompt
Technical Quality
53.0 / 110.0
(48.18%)
Prompt Adherence
19.0 / 26.0
(73.08%)
Overall Weighted
65.61 %
Technical Quality Breakdown
HTML Structure & Semantics (10.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 | PASS |
PASS
|
1.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 | PASS |
PASS
{
"unlabeled_count": 0
}
|
2.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 |
1 JS error(s).
[ "JS ERROR: file:///Users/jma345/Tesslate/UIGenEval/v4/all_code_outputs/fullpage_challenge/Groq-Gemma2-9b/chocolate-lava-cakes.jpg - Failed to load resource: net::ERR_FILE_NOT_FOUND" ] |
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": "Radio inputs with the same name attribute value must be part of a group",
"id": "radiogroup",
"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": "Radio inputs with the same name attribute value must be part of a group",
"id": "radiogroup",
"impact": "critical"
}
]
|
5.0 / 20.0 | mobile |
Rendered Color & Contrast (15.0 / 30.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'A decadent and rich chocolate lava cake ...' in <p class='mt-4 text-lg text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1 cup all-purpose flour' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1/2 cup unsweetened cocoa powder' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1/2 cup sugar' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step1' class='bg-blue-500 hover:bg-blue-700 ...'>
{
"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='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'Nutrient' in <th class='px-4 py-2 text-left text-gray-...'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'Amount' in <th class='px-4 py-2 text-left text-gray-...'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '2' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '3' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '4' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '5' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
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 |
3 WCAG AA failures on 42 instances.
|
7.5 / 15.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'A decadent and rich chocolate lava cake ...' in <p class='mt-4 text-lg text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1 cup all-purpose flour' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1/2 cup unsweetened cocoa powder' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1/2 cup sugar' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Start Timer' in <button data-testid='timer-btn-step1' class='bg-blue-500 hover:bg-blue-700 ...'>
{
"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='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Start Timer"
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'Nutrient' in <th class='px-4 py-2 text-left text-gray-...'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for 'Amount' in <th class='px-4 py-2 text-left text-gray-...'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '1' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '2' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '3' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '4' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.87 for '5' in <label class='text-gray-600'>
{
"ratio": 6.86712857158153
}
|
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 |
3 WCAG AA failures on 42 instances.
|
7.5 / 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 3 (Actual: 3, 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']' NOT found.
Selector:
[data-testid='recipe-timer-display'] |
0.0 / 2.0 | desktop |
| Review Form | FAIL |
Element 'form[data-testid='review-form']' NOT found.
Selector:
form[data-testid='review-form'] |
0.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) | FAIL |
Custom script evaluation result: False (expected true).
Script Eval: False
|
0.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 3 (Actual: 3, 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']' NOT found.
Selector:
[data-testid='recipe-timer-display'] |
0.0 / 2.0 | mobile |
| Review Form | FAIL |
Element 'form[data-testid='review-form']' NOT found.
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) | FAIL |
Custom script evaluation result: False (expected true).
Script Eval: False
|
0.0 / 3.0 | mobile |