diff --git a/bwh_hive/bwh_hive/api.py b/bwh_hive/bwh_hive/api.py index 46c62ac..f8a20dc 100644 --- a/bwh_hive/bwh_hive/api.py +++ b/bwh_hive/bwh_hive/api.py @@ -851,7 +851,6 @@ def get_project_activity(project: str, limit: int = 100): "start_date", "completed_on", "size", - "uat_status", ): activities.append( { diff --git a/bwh_hive/bwh_hive/doctype/hive_task/hive_task.json b/bwh_hive/bwh_hive/doctype/hive_task/hive_task.json index 1fb8888..1893a6e 100644 --- a/bwh_hive/bwh_hive/doctype/hive_task/hive_task.json +++ b/bwh_hive/bwh_hive/doctype/hive_task/hive_task.json @@ -23,10 +23,6 @@ "recurring_parent", "pr_link", "description", - "uat_section", - "uat_status", - "uat_approved_by", - "uat_date", "github_issue_url" ], "fields": [ @@ -144,32 +140,6 @@ "fieldtype": "Text Editor", "label": "Description" }, - { - "fieldname": "uat_section", - "fieldtype": "Section Break", - "label": "UAT" - }, - { - "default": "Pending", - "fieldname": "uat_status", - "fieldtype": "Select", - "in_standard_filter": 1, - "label": "UAT Status", - "options": "Pending\nApproved\nRejected" - }, - { - "fieldname": "uat_approved_by", - "fieldtype": "Link", - "label": "UAT Approved By", - "options": "User", - "read_only": 1 - }, - { - "fieldname": "uat_date", - "fieldtype": "Date", - "label": "UAT Date", - "read_only": 1 - }, { "fieldname": "github_issue_url", "fieldtype": "Data", diff --git a/bwh_hive/bwh_hive/doctype/hive_task/hive_task.py b/bwh_hive/bwh_hive/doctype/hive_task/hive_task.py index 7826e6d..ee56328 100644 --- a/bwh_hive/bwh_hive/doctype/hive_task/hive_task.py +++ b/bwh_hive/bwh_hive/doctype/hive_task/hive_task.py @@ -62,9 +62,6 @@ class HiveTask(Document): start_date: DF.Date | None status: DF.Literal["Someday", "Backlog", "To Do", "In Progress", "Done", "Blocked"] title: DF.Data - uat_approved_by: DF.Link | None - uat_date: DF.Date | None - uat_status: DF.Literal["Pending", "Approved", "Rejected"] # end: auto-generated types def validate(self): @@ -178,17 +175,3 @@ def _maybe_spawn_recurrence(self): title="recurring task: assign failed", message=f"Failed to assign {assignees} to {new_task.name}", ) - - @frappe.whitelist() - def approve_uat(self): - self.uat_status = "Approved" - self.uat_approved_by = frappe.session.user - self.uat_date = today() - self.save() - - @frappe.whitelist() - def reject_uat(self): - self.uat_status = "Rejected" - self.uat_approved_by = frappe.session.user - self.uat_date = today() - self.save() diff --git a/e2e/tests/app-switcher.spec.ts b/e2e/tests/app-switcher.spec.ts index 7fbf2d2..81f7288 100644 --- a/e2e/tests/app-switcher.spec.ts +++ b/e2e/tests/app-switcher.spec.ts @@ -18,7 +18,7 @@ test.describe("App switcher", () => { await gotoHive(page, "/"); - await page.locator('[data-slot="sidebar-header"] button').click(); + await page.getByRole("button", { name: "Hive" }).first().click(); await page.getByRole("menuitem", { name: "Switch app" }).hover(); const desk = page.getByRole("menuitem", { name: "Desk" }); diff --git a/e2e/tests/client-experience.spec.ts b/e2e/tests/client-experience.spec.ts index b9d1925..3d98374 100644 --- a/e2e/tests/client-experience.spec.ts +++ b/e2e/tests/client-experience.spec.ts @@ -153,11 +153,6 @@ test.describe("Client Experience", () => { await expect(panel.getByLabel("Title")).toBeVisible(); await expect(panel.getByLabel("Title")).toBeDisabled(); await expect(panel.getByLabel("Assignees")).toBeDisabled(); - - // UAT is the one thing a client is meant to act on. - await expect( - panel.getByRole("button", { name: /Approve/ }).first(), - ).toBeVisible(); }); test("a client can raise a feature request", async ({ page, request }) => { diff --git a/frontend/src/components/projects/ActivityTab.vue b/frontend/src/components/projects/ActivityTab.vue index 5e1afab..4f278f4 100644 --- a/frontend/src/components/projects/ActivityTab.vue +++ b/frontend/src/components/projects/ActivityTab.vue @@ -122,7 +122,6 @@ const FIELD_LABELS: Record = { status: 'status', target_date: 'target date', title: 'title', - uat_status: 'UAT status', } const DOC_LABELS: Record = { diff --git a/frontend/src/components/projects/ProjectHeader.vue b/frontend/src/components/projects/ProjectHeader.vue index befbe9f..f77b00c 100644 --- a/frontend/src/components/projects/ProjectHeader.vue +++ b/frontend/src/components/projects/ProjectHeader.vue @@ -136,8 +136,7 @@ - +

GitHub

@@ -58,10 +57,8 @@ const props = withDefaults( assigneesByTask?: Record loading?: boolean readonly?: boolean - /** UAT badges only mean something on a project that has a client. */ - hasClient?: boolean }>(), - { assigneesByTask: () => ({}), loading: false, readonly: false, hasClient: true }, + { assigneesByTask: () => ({}), loading: false, readonly: false }, ) const emit = defineEmits<{ select: [task: HiveTask]; changed: [] }>() diff --git a/frontend/src/components/tasks/TaskBoard.vue b/frontend/src/components/tasks/TaskBoard.vue index a86bf86..213eefa 100644 --- a/frontend/src/components/tasks/TaskBoard.vue +++ b/frontend/src/components/tasks/TaskBoard.vue @@ -30,7 +30,6 @@ :task="element" :assignees="assigneesByTask[element.name]" :depends-on="dependency(element)" - :show-uat="showUat" :draggable="!readonly" @select="emit('select', element)" /> @@ -73,9 +72,8 @@ const props = withDefaults( list?: TaskListHandle /** Clients see the board but cannot move cards. */ readonly?: boolean - showUat?: boolean }>(), - { assigneesByTask: () => ({}), readonly: false, showUat: true }, + { assigneesByTask: () => ({}), readonly: false }, ) const emit = defineEmits<{ select: [task: HiveTask]; changed: [] }>() diff --git a/frontend/src/components/tasks/TaskBoardCard.vue b/frontend/src/components/tasks/TaskBoardCard.vue index 7ebf72e..d192903 100644 --- a/frontend/src/components/tasks/TaskBoardCard.vue +++ b/frontend/src/components/tasks/TaskBoardCard.vue @@ -49,12 +49,6 @@ > -
-
-
- UAT status - -
-

- {{ task.doc.uat_status === 'Approved' ? 'Approved' : 'Rejected' }} by - {{ task.doc.uat_approved_by }} - -

-
-
-
- @@ -293,7 +250,6 @@