diff --git a/tests/sanity/tests/model/tracker/milestones-details-page.ts b/tests/sanity/tests/model/tracker/milestones-details-page.ts index 9ed929d987..a04827435d 100644 --- a/tests/sanity/tests/model/tracker/milestones-details-page.ts +++ b/tests/sanity/tests/model/tracker/milestones-details-page.ts @@ -4,8 +4,18 @@ import { NewMilestone } from './types' export class MilestonesDetailsPage extends CommonTrackerPage { inputTitle = (): Locator => this.page.locator('div.popupPanel-body input[type="text"]') - buttonStatus = (): Locator => this.page.locator('//span[text()="Status"]/following-sibling::div[1]/button') - buttonTargetDate = (): Locator => this.page.locator('//span[text()="Target date"]/following-sibling::div[1]/button') + // EditMilestone now renders Status / Start date / Target date inline in the + // body (`div.date-cell > span.cell-label + `) instead of the + // auto-generated side panel (Gantt schema PR — Milestone.startDate). The + // button is the immediate sibling of the label span, no wrapping div. + buttonStatus = (): Locator => + this.page.locator('//span[@class="cell-label" and normalize-space(.)="Status"]/following-sibling::button[1]') + + buttonStartDate = (): Locator => + this.page.locator('//span[@class="cell-label" and normalize-space(.)="Start date"]/following-sibling::button[1]') + + buttonTargetDate = (): Locator => + this.page.locator('//span[@class="cell-label" and normalize-space(.)="Target date"]/following-sibling::button[1]') inputMilestoneName = (): Locator => this.page.locator('input[placeholder="Milestone name"]') inputDescription = (): Locator => this.page.locator('div.inputMsg div.tiptap') buttonYesMoveAndDeleteMilestonePopup = (): Locator => diff --git a/tests/sanity/tests/model/tracker/milestones-page.ts b/tests/sanity/tests/model/tracker/milestones-page.ts index 9b92cd1e4e..40b993d175 100644 --- a/tests/sanity/tests/model/tracker/milestones-page.ts +++ b/tests/sanity/tests/model/tracker/milestones-page.ts @@ -14,8 +14,14 @@ export class MilestonesPage extends CommonTrackerPage { buttonNewMilestoneSetStatus = (): Locator => this.page.locator('form[id="tracker:string:NewMilestone"] div.antiCard-pool button[type="button"]') + // NewMilestone form now renders Start Date before Target Date in the pool + // (Gantt schema PR added Milestone.startDate). Match the LAST datetime-button + // so this resolves to the target-date button without strict-mode violations. + buttonNewMilestoneStartDate = (): Locator => + this.page.locator('form[id="tracker:string:NewMilestone"] div.antiCard-pool button.datetime-button').first() + buttonNewMilestoneTargetDate = (): Locator => - this.page.locator('form[id="tracker:string:NewMilestone"] div.antiCard-pool button.datetime-button') + this.page.locator('form[id="tracker:string:NewMilestone"] div.antiCard-pool button.datetime-button').last() buttonNewMilestoneCreate = (): Locator => this.page.locator('form[id="tracker:string:NewMilestone"] button[type="submit"]')