Prompt: Realtime Collaborative Text Editor Simulation (FPC008)
Model: Groq-Llama4-Scout | Date: 07/16/2025 | Page Title: N/A
Prompt Description
Simulate a basic real-time collaborative text editor interface (like a simplified Google Docs). Focus is on the UI and client-side simulation of collaboration.
**UI Components:**
1. **Main Text Area:** A large, editable content area (e.g., a `div` with `contenteditable='true'` or a `<textarea>`). This is where the main document content goes. Identifiable as `data-testid='editor-content-area'`.
2. **User Cursors/Selections (Simulated):**
* Simulate the presence of 1-2 other 'collaborators'. When the page loads, display 'cursors' (small styled `div`s or `span`s) at random positions within the text content to represent other users. These should have a user's name associated (e.g., as a tooltip or a small label). Example: `data-testid='cursor-user-Alice'`.
* Optionally, simulate a text selection by another user (e.g., by applying a background color to a range of text and associating it with a user).
3. **Toolbar (Basic):**
* Buttons for Bold, Italic, Underline. These should apply/remove formatting to the selected text in the main editor area. (Using `document.execCommand` is acceptable for this simulation, despite its deprecation, or implement custom rich text logic if ambitious). Toolbar: `data-testid='editor-toolbar'`. Bold button: `data-testid='toolbar-bold-btn'`.
4. **Live Changes Simulation:**
* After a few seconds of page load, simulate another user typing by programmatically inserting a short string (e.g., '... added by Bob ...') into the main editor content at a specific point.
* This change should appear without the current user directly typing it.
**Technical & Accessibility Requirements:**
* Semantic HTML. The editable area needs careful ARIA role consideration if not a standard form element (e.g., `role='textbox'`, `aria-multiline='true'`).
* The simulated cursors and selections must not interfere with the primary user's ability to edit the document or navigate it with a keyboard.
* Toolbar buttons must be keyboard accessible and indicate their state (e.g., if selected text is bold, Bold button appears pressed using `aria-pressed`).
* Changes made by 'other users' should be announced by an `aria-live` region (`data-testid='collaboration-updates'`) to inform assistive technology users (e.g., 'Bob made an edit').
* Responsive design for the editor interface.
* Styling: Tailwind CSS, with custom CSS/JS for the editor functionality, cursor simulation, rich text commands, and live update announcements.
**Testing Identifiers:**
* Editor Content Area: `data-testid='editor-content-area'`
* A Simulated User Cursor: `data-testid='cursor-user-Alice'`
* Editor Toolbar: `data-testid='editor-toolbar'`
* Bold Button: `data-testid='toolbar-bold-btn'`
* Collaboration Updates Announcer: `data-testid='collaboration-updates'`
Key Links & Info
Analysis Timestamp: 07/16/2025 17:53:09
Scores for this Prompt
Technical Quality
50.0 / 110.0
(45.45%)
Prompt Adherence
20.0 / 25.0
(80.00%)
Overall Weighted
69.64 %
Technical Quality Breakdown
HTML Structure & Semantics (4.0 / 10.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| HTML Lang | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Page Title | WARN |
Missing/empty.
|
0.0 / 1.0 | desktop |
| Main Tag | FAIL |
No visible <main>.
|
0.0 / 1.0 | desktop |
| Nav Tag | WARN |
No visible <nav>.
|
0.0 / 1.0 | desktop |
| Footer Tag | WARN |
No visible <footer>.
|
0.0 / 1.0 | desktop |
| H1 Count | FAIL |
No visible headings.
|
0.0 / 1.0 | desktop |
| Heading Order Logic | FAIL |
No visible headings.
|
0.0 / 1.0 | desktop |
| Image Alts | INFO |
No visible images (INFO).
|
1.0 / 1.0 | desktop |
| Form Labels | INFO |
No relevant form inputs (INFO).
{
"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 (5.0 / 5.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| JS Console Errors | PASS |
No significant JS errors.
|
5.0 / 5.0 | desktop |
Accessibility (Axe-core) (8.0 / 40.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Axe Violations | FAIL |
5 Axe violations (Crit:0,Ser:2,Mod:3,Min:0). Report: axe_report_FPC008_Realtime_Collaborative_Text_Editor_Simulation_desktop.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Documents must have \u003ctitle\u003e element to aid in navigation",
"id": "document-title",
"impact": "serious"
},
{
"help": "Page must have one main landmark",
"id": "landmark-one-main",
"impact": "moderate"
},
{
"help": "Page must contain a level-one heading",
"id": "page-has-heading-one",
"impact": "moderate"
},
{
"help": "All page content must be contained by landmarks",
"id": "region",
"impact": "moderate"
}
]
|
4.0 / 20.0 | desktop |
| Axe Violations | FAIL |
5 Axe violations (Crit:0,Ser:2,Mod:3,Min:0). Report: axe_report_FPC008_Realtime_Collaborative_Text_Editor_Simulation_mobile.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Documents must have \u003ctitle\u003e element to aid in navigation",
"id": "document-title",
"impact": "serious"
},
{
"help": "Page must have one main landmark",
"id": "landmark-one-main",
"impact": "moderate"
},
{
"help": "Page must contain a level-one heading",
"id": "page-has-heading-one",
"impact": "moderate"
},
{
"help": "All page content must be contained by landmarks",
"id": "region",
"impact": "moderate"
}
]
|
4.0 / 20.0 | mobile |
Rendered Color & Contrast (15.0 / 30.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Bold' in <button data-testid='toolbar-bold-btn' class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Bold"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Italic' in <button class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Italic"
}
|
0.0 / 0.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Underline' in <button class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Underline"
}
|
0.0 / 0.0 | desktop |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.38 for 'Alice' in <span data-testid='cursor-user-Alice' class='cursor-simulation'>
{
"ratio": 6.382153934575207
}
|
0.0 / 0.0 | desktop |
| Contrast Check Result | FAIL |
3 WCAG AA failures on 5 instances.
|
7.5 / 15.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Bold' in <button data-testid='toolbar-bold-btn' class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Bold"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Italic' in <button class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Italic"
}
|
0.0 / 0.0 | mobile |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Underline' in <button class='py-2 px-4 bg-blue-500 text-whi...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Underline"
}
|
0.0 / 0.0 | mobile |
| Contrast Suboptimal (AAA) | INFO |
AAA WARN 6.38 for 'Alice' in <span data-testid='cursor-user-Alice' class='cursor-simulation'>
{
"ratio": 6.382153934575207
}
|
0.0 / 0.0 | mobile |
| Contrast Check Result | FAIL |
3 WCAG AA failures on 6 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 |
|---|---|---|---|---|
| Editor Content Area | PASS |
Element '[data-testid='editor-content-area'][contenteditable='true'], textarea[data-testid='editor-content-area']' present and visible.
Selector:
[data-testid='editor-content-area'][contenteditable='true'], textarea[data-testid='editor-content-area'] |
3.0 / 3.0 | desktop |
| At least one Simulated User Cursor | PASS |
Element '[data-testid^='cursor-user-']' present and visible.
Selector:
[data-testid^='cursor-user-'] |
3.0 / 3.0 | desktop |
| Editor Toolbar | PASS |
Element '[data-testid='editor-toolbar']' present and visible.
Selector:
[data-testid='editor-toolbar'] |
2.0 / 2.0 | desktop |
| Bold Button | PASS |
Element 'button[data-testid='toolbar-bold-btn']' present and visible.
Selector:
button[data-testid='toolbar-bold-btn'] |
2.0 / 2.0 | desktop |
| Collaboration Updates Announcer | PASS |
Element '[data-testid='collaboration-updates'][aria-live]' present and visible.
Selector:
[data-testid='collaboration-updates'][aria-live] |
2.0 / 2.0 | desktop |
| Apply Bold Formatting | PASS |
All interaction steps/outcomes verified.
|
5.0 / 5.0 | desktop |
| Simulated Collaborative Edit Appears | FAIL |
Unknown adherence check type: text_content_change_dynamic
|
0.0 / 5.0 | desktop |
| Editor Area has ARIA Role if ContentEditable Div | PASS |
Custom script evaluation result: True (expected true).
Script Eval: True
|
3.0 / 3.0 | desktop |
| Editor Content Area | PASS |
(Points already awarded) Element '[data-testid='editor-content-area'][contenteditable='true'], textarea[data-testid='editor-content-area']' present and visible.
Selector:
[data-testid='editor-content-area'][contenteditable='true'], textarea[data-testid='editor-content-area'] |
0.0 / 3.0 | mobile |
| At least one Simulated User Cursor | PASS |
(Points already awarded) Element '[data-testid^='cursor-user-']' present and visible.
Selector:
[data-testid^='cursor-user-'] |
0.0 / 3.0 | mobile |
| Editor Toolbar | PASS |
(Points already awarded) Element '[data-testid='editor-toolbar']' present and visible.
Selector:
[data-testid='editor-toolbar'] |
0.0 / 2.0 | mobile |
| Bold Button | PASS |
(Points already awarded) Element 'button[data-testid='toolbar-bold-btn']' present and visible.
Selector:
button[data-testid='toolbar-bold-btn'] |
0.0 / 2.0 | mobile |
| Collaboration Updates Announcer | PASS |
(Points already awarded) Element '[data-testid='collaboration-updates'][aria-live]' present and visible.
Selector:
[data-testid='collaboration-updates'][aria-live] |
0.0 / 2.0 | mobile |
| Apply Bold Formatting | PASS |
(Points already awarded) All interaction steps/outcomes verified.
|
0.0 / 5.0 | mobile |
| Simulated Collaborative Edit Appears | FAIL |
Unknown adherence check type: text_content_change_dynamic
|
0.0 / 5.0 | mobile |
| Editor Area has ARIA Role if ContentEditable Div | PASS |
(Points already awarded) Custom script evaluation result: True (expected true).
Script Eval: True
|
0.0 / 3.0 | mobile |