Enter and manage weekly time in the Dedalus Clarity PPM timesheet app
(https://dedalus.itdhosting.de/pm/#/timesheets/), the successor to Timesheet.
Same project structure as Timesheet; only the entry UI differs.
Prerequisites
- Node.js: required — https://nodejs.org
- playwright npm package:
npm install playwright - An authenticated Clarity tab open in the user's Chrome (SSO already done)
Golden rules
- Never log in. Attach to the already-authenticated browser via CDP (reference/automation-snippets.md).
- Reconnaissance first. Clarity's modern UX is an Angular SPA (hash
routing
#/…) with no documented stable test-ids. Prefer accessible selectors —getByRole,getByLabel,getByText— and dump the DOM before acting (navigation.md). - 0.5h granularity, hours model. Round to the half-hour. A cell's time is saved as soon as it is entered; a task/project selected without any hours is not saved. The weekly hour cap varies by period (21 / 28 / 35 / 14h observed for partial weeks) — never hardcode 35h or "7h × 5"; read the target from the grid.
- Never submit without explicit confirmation. Submitting sends the sheet into Clarity's 3-level validation and is consequential. Save entries, but only click Submit for Approval on the user's explicit go-ahead (the rollout waits for the "feu vert" on the CLARITY channel). Who validates what: reference/validation-model.md.
- Wait for the SPA.
waitForLoadState('networkidle')and wait for the target grid/row before reading or filling; let spinners disappear.
Connect to the authenticated session
The user starts Chrome with --remote-debugging-port=9222, opens Clarity, then
the script attaches with CDP so the live session is reused (never automate a
login page). Code: automation-snippets.md.
Navigation model
App shell routes (verified live): Timesheets → #/timesheets (tabs My
Timesheet | Timesheets), Time entry / approval → #/customobjects/custZTes/common,
Tasks → #/tasks/common. My Timesheet detail →
#/timesheets/timesheet?resourceId=<id>&timeperiodId=<id> — a grid of rows
(tasks/projects) × day columns (Mon–Sun), cells hold hours. Tasks are not
pre-assigned so Add Assigned Tasks is disabled → use Select Tasks, set
the Assigned Resources filter (the picker stays on "Loading data…" until it
is), then pick the activity (Gx.y). Full map + selectors in
navigation.md; ERP PAS FR projects & activity codes
in erp-pas-fr-projects.md.
Task index (the tools this skill provides)
| Goal | Recipe |
|---|---|
| Open a week / period timesheet | timesheet-entry.md |
| Add a task by project code + activity | timesheet-entry.md |
| Enter hours in a day cell (0.5h) | timesheet-entry.md |
| Enter congés / jours fériés | timesheet-entry.md |
| Copy previous week | timesheet-entry.md |
| Submit for approval (write, gated) | timesheet-entry.md |
| Approve / return team lines (write, gated) | approval.md |
| Autonomous weekly declaration (default project) | autonomous.md |
| Auto-validate the whole team (unattended) | autonomous.md |
| Delegate validation (set Task Owner) | approval.md |
| ERP PAS FR project → responsible matrix + Gx.y activity codes | erp-pas-fr-projects.md |
| Read/scrape a filled timesheet | automation-snippets.md |
Recommended entry order (from the rollout)
- Congés (incl. jours fériés) on the right weeks, matching Workday since 01/04. Same modality as old Timesheet. Part-timers need extra config — flag it.
- Recurring meetings — pick the task best matching the meeting's objective (e.g. New development for Dailies).
- Roadmap-project time — select the activity by
Gx.ycode (G1.1 Requirements Analysis, G2.1 New Development, G2.2 Sustained Engineering, G2.4 Generic Testing, G2.3 Generic Documentation…); keep coherent with JIRA. The roadmap project name is on the JIRA EPIC. Codes + Cap/Non-Cap: erp-pas-fr-projects.md. - Other time (product release).
Workflow
- Attach to the authenticated browser; confirm the timesheets page loaded.
- Reconnaissance: screenshot + dump roles/labels of the grid and controls.
- Open the target week; add tasks by project code, pick activities.
- Fill day cells at 0.5h granularity; verify each save (a no-hours row drops).
- Copy forward to later weeks as needed.
- Stop and summarize before submitting; submit only on explicit go-ahead.
Important Notes
- Host is fixed:
dedalus.itdhosting.de. Never hardcode another instance. - Tasks are not pre-assigned — always add rows via Select Tasks (the Add Assigned Tasks option is disabled with no assignments).
- Clarity UI is in English; the user context is French — accept both labels.
- Sensitive internal data: read/fill only what's asked; do not persist beyond task.
- Autonomous runs (autonomous.md) run where the browser
lives (local schedule), start in
DRY_RUN, are idempotent, and never approve a flagged line; submit/approve stay behind explicit config flags.