--- title: "Common" slug: "common" updated: 2026-08-26T15:26:22Z published: 2026-08-26T15:26:22Z canonical: "docs.viewlift.com/common" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.viewlift.com/llms.txt > Use this file to discover all available pages before exploring further. # Common ## Content - Common QA Core Checklist Run this checklist before any content-type specific file. This covers shared list/create/details/header/bulk behavior used across content modules. ## Totals | Priority | Count | | --- | --- | | P0 | 8 | | P1 | 6 | | P2 | 3 | | P3 | 1 | | **Total** | **18** | ## P0 - Release blockers ### P0-01 - Content list loads records for selected type | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | The content list page must load records for the selected content type without runtime failure. | | **Verify** | UI + DevTools Network. Confirm type list operation succeeds (for example `vodList`, `articleList`, `liveVideoList`) or REST list path for REST-backed types. | | **Pass** | List renders rows and total count matches network payload count. | | **Fail** | Blank/error state appears unexpectedly, request fails, or network returns GraphQL `errors`. | ### P0-02 - Add New opens correct create entry point | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | The global create action must open the create flow for the currently selected type. | | **Verify** | UI only. Click `Add New` from list header. | | **Pass** | Create dialog/module opens with the expected type title and inputs. | | **Fail** | Wrong create form opens, modal does not open, or page errors. | ### P0-03 - Create flow persists a new record | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Minimum valid create inputs should create a new record and make it discoverable in list/details. | | **Verify** | UI + DevTools Network. Confirm create mutation (type-specific `*Create`) or REST create path succeeds. | | **Pass** | Success feedback appears and created record is visible in list or opens in details/modal. | | **Fail** | Success is shown without created record, request errors, or save silently fails. | ### P0-04 - Row open behavior routes correctly (page or modal) | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Clicking a row should open details page or modal according to type contract. | | **Verify** | UI only. Open one row from at least one page-backed type and one modal-backed type in release scope. | | **Pass** | Page-backed types navigate to `/content/{type}/{id}` and modal-backed types open in place. | | **Fail** | Wrong navigation target, missing modal, or row click is non-functional. | ### P0-05 - Detail save sends update and persists changes | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Editing a detail field and saving must persist correctly. | | **Verify** | UI + DevTools Network. Confirm type update mutation (for example `vodUpdate`, `seriesUpdate`) or REST update call. | | **Pass** | Save feedback appears and a refresh shows updated value persisted. | | **Fail** | Save appears successful but value reverts, request fails, or no update request is fired. | ### P0-06 - Publish/unpublish state transition works | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Header/list state actions must transition content status according to action permissions. | | **Verify** | UI + DevTools Network. Trigger publish or unpublish and inspect update action payload. | | **Pass** | Status changes to expected state and remains correct after refresh. | | **Fail** | Action control is broken, wrong state applied, or network returns errors. | ### P0-07 - Schedule action rejects past and accepts future time | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Scheduling should block past datetime and accept valid future datetime. | | **Verify** | UI only (optional network check for update mutation). | | **Pass** | Past value shows validation error; future value closes picker and persists schedule. | | **Fail** | Past datetime is accepted or future schedule is not retained. | ### P0-08 - Bulk state action applies to selected rows only | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Bulk publish/update/archive/unarchive must apply only to selected rows. | | **Verify** | UI + DevTools Network. Use multi-select and validate bulk action update requests. | | **Pass** | Selected rows transition state correctly; non-selected rows remain unchanged. | | **Fail** | Action affects wrong rows, partially applies without error, or no network request is sent. | ## P1 - Core shared flows ### P1-01 - Search filters records by keyword | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Keyword search should narrow records for current type and return expected subset. | | **Verify** | UI + DevTools Network. Confirm `keyword` is present in query variables or REST query string. | | **Pass** | Result set updates consistently with query and can be cleared back to full list. | | **Fail** | Search input changes but records do not update, or wrong keyword is sent. | ### P1-02 - Sort and pagination controls are consistent | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Sort and page controls must fetch and show the expected list segment. | | **Verify** | UI + DevTools Network. Change sort and page index once each. | | **Pass** | Row order or page slice changes correctly and URL/query params update. | | **Fail** | Controls update visually but data does not change, or stale page is shown. | ### P1-03 - List and grid view toggle behaves correctly | Field | Value | | --- | --- | | **Type** | UI | | **Description** | Toggle between list and grid views should render expected layout where supported. | | **Verify** | UI only. | | **Pass** | View switch updates layout and preserves current filters/sort. | | **Fail** | Toggle state changes without layout change or resets page context unexpectedly. | ### P1-04 - Sidebar tab navigation updates tab state | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Selecting tabs in details should switch section view and keep tab context. | | **Verify** | UI only. Navigate 2-3 tabs on a details page-backed type. | | **Pass** | Active tab switches correctly and tab-specific content loads without crash. | | **Fail** | Wrong section renders, tab selection is lost, or content area breaks. | ### P1-05 - Mandatory validation blocks invalid save | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Missing required values (title/permalink/images where mandatory) should prevent a valid save. | | **Verify** | UI only, with optional network confirmation that no invalid save request is sent. | | **Pass** | Validation message is visible and save is blocked until fixed. | | **Fail** | Invalid data is accepted or save request is sent despite validation errors. | ### P1-06 - Static bulk tag/category action works where enabled | Field | Value | | --- | --- | | **Type** | Functional + API | | **Description** | Manage Tags/Manage Category bulk modals should apply add/remove operations for eligible types. | | **Verify** | UI + DevTools Network. Confirm `contentBulkUpdate` succeeds. | | **Pass** | Selected rows reflect applied add/remove tag/category updates after refresh. | | **Fail** | Bulk modal applies nothing, updates wrong rows, or request fails with GraphQL errors. | ## P2 - Secondary shared checks ### P2-01 - Action availability respects role and item status | Field | Value | | --- | --- | | **Type** | UI | | **Description** | Action menus should show only valid actions for current status and permissions. | | **Verify** | UI only. Check two rows with different statuses. | | **Pass** | Invalid actions are hidden/disabled and valid actions are available. | | **Fail** | User can trigger disallowed actions or required actions are missing. | ### P2-02 - Multi-select does not break row-level actions | Field | Value | | --- | --- | | **Type** | Functional | | **Description** | Selecting multiple rows should not corrupt per-row action behavior after deselection. | | **Verify** | UI only. Select rows, clear selection, then open a row action menu. | | **Pass** | Action menu behavior returns to normal single-row behavior. | | **Fail** | Action controls stay incorrectly disabled or target wrong content item. | ### P2-03 - Empty and no-result states remain actionable | Field | Value | | --- | --- | | **Type** | UI | | **Description** | Empty list or no-result view should guide recovery (clear filters or create new content). | | **Verify** | UI only (force no results with unmatched keyword). | | **Pass** | Empty state appears with usable recovery action and no layout break. | | **Fail** | Empty state is broken, blocks navigation, or hides recovery controls. | ## P3 - Polish ### P3-01 - Happy path emits no uncaught console/runtime errors | Field | Value | | --- | --- | | **Type** | UI + API | | **Description** | Core happy-path actions should complete without uncaught browser console exceptions. | | **Verify** | UI + DevTools Console during list load, create, save, and publish. | | **Pass** | No uncaught errors/warnings tied to broken behavior are logged. | | **Fail** | Console shows uncaught exceptions or rejected promises during normal flow. |