@iblai/iblai-js 2.5.0 → 2.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data-layer/playwright/index.d.ts +4 -2
- package/dist/data-layer/playwright/lti-tab-helpers.d.ts +36 -1
- package/dist/data-layer/playwright/memory-admin-helpers.d.ts +153 -0
- package/dist/data-layer/playwright/memory-test-helpers.d.ts +8 -7
- package/dist/data-layer/playwright/voice-tab-helpers.d.ts +32 -0
- package/dist/playwright/index.cjs +550 -26
- package/dist/playwright/index.cjs.map +1 -1
- package/dist/playwright/index.d.ts +231 -10
- package/dist/playwright/index.esm.js +521 -27
- package/dist/playwright/index.esm.js.map +1 -1
- package/dist/playwright/playwright/index.d.ts +4 -2
- package/dist/playwright/playwright/lti-tab-helpers.d.ts +36 -1
- package/dist/playwright/playwright/memory-admin-helpers.d.ts +153 -0
- package/dist/playwright/playwright/memory-test-helpers.d.ts +8 -7
- package/dist/playwright/playwright/voice-tab-helpers.d.ts +32 -0
- package/dist/security/playwright/index.d.ts +4 -2
- package/dist/security/playwright/lti-tab-helpers.d.ts +36 -1
- package/dist/security/playwright/memory-admin-helpers.d.ts +153 -0
- package/dist/security/playwright/memory-test-helpers.d.ts +8 -7
- package/dist/security/playwright/voice-tab-helpers.d.ts +32 -0
- package/dist/web-containers/playwright/index.d.ts +4 -2
- package/dist/web-containers/playwright/lti-tab-helpers.d.ts +36 -1
- package/dist/web-containers/playwright/memory-admin-helpers.d.ts +153 -0
- package/dist/web-containers/playwright/memory-test-helpers.d.ts +8 -7
- package/dist/web-containers/playwright/voice-tab-helpers.d.ts +32 -0
- package/dist/web-containers/source/index.esm.js +12524 -11248
- package/dist/web-containers/source/next/index.esm.js +1740 -444
- package/dist/web-utils/playwright/index.d.ts +4 -2
- package/dist/web-utils/playwright/lti-tab-helpers.d.ts +36 -1
- package/dist/web-utils/playwright/memory-admin-helpers.d.ts +153 -0
- package/dist/web-utils/playwright/memory-test-helpers.d.ts +8 -7
- package/dist/web-utils/playwright/voice-tab-helpers.d.ts +32 -0
- package/package.json +4 -4
|
@@ -1617,19 +1617,20 @@ async function openAddMemoryDialog(page) {
|
|
|
1617
1617
|
return dialog;
|
|
1618
1618
|
}
|
|
1619
1619
|
/**
|
|
1620
|
-
* Toggle a memory setting switch and verify the state changes.
|
|
1621
|
-
*
|
|
1620
|
+
* Toggle a memory setting switch and verify the state changes. Completion is
|
|
1621
|
+
* gated on `aria-checked` flipping — which only happens once the settings
|
|
1622
|
+
* mutation resolves — rather than on timing. Returns the new checked state.
|
|
1622
1623
|
*/
|
|
1623
1624
|
async function toggleMemorySwitch(page, switchName) {
|
|
1624
1625
|
const switchEl = page.getByRole('switch', { name: switchName });
|
|
1625
1626
|
await expect(switchEl).toBeVisible({ timeout: 10000 });
|
|
1626
1627
|
const wasChecked = await switchEl.isChecked();
|
|
1627
1628
|
await switchEl.click();
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
logger.info(`Toggled "${switchName}" from ${wasChecked} to ${
|
|
1632
|
-
return
|
|
1629
|
+
await expect(switchEl).toHaveAttribute('aria-checked', String(!wasChecked), {
|
|
1630
|
+
timeout: 15000,
|
|
1631
|
+
});
|
|
1632
|
+
logger.info(`Toggled "${switchName}" from ${wasChecked} to ${!wasChecked}`);
|
|
1633
|
+
return !wasChecked;
|
|
1633
1634
|
}
|
|
1634
1635
|
/**
|
|
1635
1636
|
* Add a memory via the Add Memory dialog.
|
|
@@ -1649,32 +1650,47 @@ async function addMemory(page, content) {
|
|
|
1649
1650
|
logger.info(`Added memory: "${content}"`);
|
|
1650
1651
|
}
|
|
1651
1652
|
/**
|
|
1652
|
-
* Delete
|
|
1653
|
-
*
|
|
1653
|
+
* Delete a memory row via its three-dots menu: opens the menu, clicks
|
|
1654
|
+
* Delete, and confirms in the Delete Memory dialog. The confirmation dialog
|
|
1655
|
+
* is resolved into its own Locator first (topmost dialog matching the
|
|
1656
|
+
* title), and completion is gated on it closing after the mutation resolves.
|
|
1657
|
+
*/
|
|
1658
|
+
async function deleteMemoryRow(page, memoryRow) {
|
|
1659
|
+
const menuTrigger = memoryRow.getByRole('button', { name: /^Memory actions:/ });
|
|
1660
|
+
await expect(menuTrigger).toBeVisible({ timeout: 5000 });
|
|
1661
|
+
await menuTrigger.click();
|
|
1662
|
+
// The menu portals to <body>; only one dropdown menu is ever open at once.
|
|
1663
|
+
const deleteItem = page.getByRole('menuitem', { name: 'Delete', exact: true });
|
|
1664
|
+
await expect(deleteItem).toBeVisible({ timeout: 5000 });
|
|
1665
|
+
await deleteItem.click();
|
|
1666
|
+
// Deleting asks for confirmation; the dialog stacks on top of everything.
|
|
1667
|
+
const confirmDialog = page.getByRole('dialog').filter({ hasText: 'Delete Memory' }).last();
|
|
1668
|
+
await expect(confirmDialog).toBeVisible({ timeout: 5000 });
|
|
1669
|
+
await confirmDialog.getByRole('button', { name: 'Delete', exact: true }).click();
|
|
1670
|
+
await expect(confirmDialog).toBeHidden({ timeout: 15000 });
|
|
1671
|
+
}
|
|
1672
|
+
/**
|
|
1673
|
+
* Delete the first visible memory in the list through its three-dots menu,
|
|
1674
|
+
* confirming in the Delete Memory dialog.
|
|
1654
1675
|
*/
|
|
1655
1676
|
async function deleteFirstMemory(page) {
|
|
1656
|
-
const
|
|
1657
|
-
await expect(
|
|
1658
|
-
await
|
|
1659
|
-
await deleteButton.click();
|
|
1660
|
-
// Wait for delete action to complete
|
|
1661
|
-
await page.waitForTimeout(2000);
|
|
1677
|
+
const memoryRow = page.getByTestId('memory-row').first();
|
|
1678
|
+
await expect(memoryRow).toBeVisible({ timeout: 5000 });
|
|
1679
|
+
await deleteMemoryRow(page, memoryRow);
|
|
1662
1680
|
logger.info('Memory deleted successfully');
|
|
1663
1681
|
}
|
|
1664
1682
|
/**
|
|
1665
|
-
* Delete a specific memory by matching its content text
|
|
1666
|
-
*
|
|
1667
|
-
* the
|
|
1683
|
+
* Delete a specific memory by matching its content text through its
|
|
1684
|
+
* three-dots menu, confirming in the Delete Memory dialog. Completion is
|
|
1685
|
+
* gated on the row leaving the list after the refetch.
|
|
1668
1686
|
*/
|
|
1669
1687
|
async function deleteMemoryByContent(page, content) {
|
|
1670
|
-
|
|
1671
|
-
const memoryRow = page.locator('.group').filter({ hasText: content }).first();
|
|
1688
|
+
const memoryRow = page.getByTestId('memory-row').filter({ hasText: content }).first();
|
|
1672
1689
|
await expect(memoryRow).toBeVisible({ timeout: 5000 });
|
|
1673
|
-
|
|
1674
|
-
await
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
await expect(memoryRow.getByText(content)).not.toBeVisible({ timeout: 10000 });
|
|
1690
|
+
await deleteMemoryRow(page, memoryRow);
|
|
1691
|
+
await expect(page.getByTestId('memory-row').filter({ hasText: content })).toBeHidden({
|
|
1692
|
+
timeout: 15000,
|
|
1693
|
+
});
|
|
1678
1694
|
logger.info(`Deleted memory: "${content}"`);
|
|
1679
1695
|
}
|
|
1680
1696
|
/**
|
|
@@ -1712,6 +1728,356 @@ async function verifyMemoryNotExists(page, content) {
|
|
|
1712
1728
|
logger.info(`Verified memory removed: "${content}"`);
|
|
1713
1729
|
}
|
|
1714
1730
|
|
|
1731
|
+
/**
|
|
1732
|
+
* Tenant-settings **Memory** tab helpers — Playwright bindings for the memory
|
|
1733
|
+
* administration UI from `@iblai/web-containers` (`MemoryAdminTab`):
|
|
1734
|
+
*
|
|
1735
|
+
* - the **Global** sub-tab: tenant users table with server-side search, and a
|
|
1736
|
+
* per-user popup (`user-memories-modal`) hosting the shared memories list
|
|
1737
|
+
* plus the user's two memory setting switches, and
|
|
1738
|
+
* - the **Agent** sub-tab: agents table with the shared agent autocomplete
|
|
1739
|
+
* filter, and a per-agent popup (`agent-memories-modal`) hosting the same
|
|
1740
|
+
* `ManageMemories` editor the agent settings modal renders.
|
|
1741
|
+
*
|
|
1742
|
+
* Selector policy (flakiness-proof by construction):
|
|
1743
|
+
* - Dialog-first scoping: every popup is resolved into a Locator variable
|
|
1744
|
+
* first (`openUserMemoriesPopup` / `openAgentMemoriesPopup` return it) and
|
|
1745
|
+
* all sub-elements are queried from that variable — never a bare page-wide
|
|
1746
|
+
* match that could hit same-named elements in nested portals. The popups
|
|
1747
|
+
* stack ON TOP of the tenant settings dialog, and the add/edit/delete
|
|
1748
|
+
* dialogs stack on top of the popups, so three dialogs can be open at once;
|
|
1749
|
+
* the innermost ones are resolved by content filter + `.last()` (stacked
|
|
1750
|
+
* Radix dialogs portal to the end of `<body>` in mount order, making the
|
|
1751
|
+
* last match the one on top).
|
|
1752
|
+
* - Stable hooks only: `data-testid`, role + accessible name (aria-labels).
|
|
1753
|
+
* No CSS class or structural selectors.
|
|
1754
|
+
* - No `waitForTimeout` / `networkidle`. Progress is gated on UI state that
|
|
1755
|
+
* only exists after the awaited transition: a section testid rendering, a
|
|
1756
|
+
* dialog closing after its mutation resolves, a row appearing or
|
|
1757
|
+
* disappearing after the list refetch, a switch's `aria-checked` flipping.
|
|
1758
|
+
*/
|
|
1759
|
+
const MEMORY_ADMIN_LABELS = {
|
|
1760
|
+
/** Tenant settings rail item name. */
|
|
1761
|
+
tabName: 'Memory',
|
|
1762
|
+
subTabs: {
|
|
1763
|
+
global: 'Global',
|
|
1764
|
+
agent: 'Agent',
|
|
1765
|
+
},
|
|
1766
|
+
/** Add button inside the user memories popup (shared list styling). */
|
|
1767
|
+
addMemoryButton: 'Add Memory',
|
|
1768
|
+
menu: {
|
|
1769
|
+
/** aria-label prefix of a memory row's three-dots trigger. */
|
|
1770
|
+
actionsAriaPrefix: 'Memory actions:',
|
|
1771
|
+
edit: 'Edit',
|
|
1772
|
+
delete: 'Delete',
|
|
1773
|
+
},
|
|
1774
|
+
dialogs: {
|
|
1775
|
+
add: 'Add Memory',
|
|
1776
|
+
edit: 'Edit Memory',
|
|
1777
|
+
deleteConfirm: 'Delete Memory',
|
|
1778
|
+
},
|
|
1779
|
+
/**
|
|
1780
|
+
* Switch accessible-name prefixes. The full names carry the current state
|
|
1781
|
+
* ("Auto memory capture enabled"), so helpers match on the prefix.
|
|
1782
|
+
*/
|
|
1783
|
+
switches: {
|
|
1784
|
+
autoCapture: /^Auto memory capture/,
|
|
1785
|
+
useMemory: /^Use memory in responses/,
|
|
1786
|
+
},
|
|
1787
|
+
};
|
|
1788
|
+
const UI_TIMEOUT$2 = 10000;
|
|
1789
|
+
const MUTATION_TIMEOUT$2 = 15000;
|
|
1790
|
+
// ---------------------------------------------------------------------------
|
|
1791
|
+
// Sections and rows
|
|
1792
|
+
// ---------------------------------------------------------------------------
|
|
1793
|
+
/** The Global sub-tab's body (users table + search). */
|
|
1794
|
+
function memoryAdminGlobalSection(page) {
|
|
1795
|
+
return page.getByTestId('memory-admin-global-section');
|
|
1796
|
+
}
|
|
1797
|
+
/** The Agent sub-tab's body (agents table + autocomplete filter). */
|
|
1798
|
+
function memoryAdminAgentSection(page) {
|
|
1799
|
+
return page.getByTestId('memory-admin-agent-section');
|
|
1800
|
+
}
|
|
1801
|
+
/** A users-table row for the given username. */
|
|
1802
|
+
function memoryAdminUserRow(page, username) {
|
|
1803
|
+
return memoryAdminGlobalSection(page).getByTestId(`memory-admin-user-row-${username}`);
|
|
1804
|
+
}
|
|
1805
|
+
/** An agents-table row for the given agent unique_id. */
|
|
1806
|
+
function memoryAdminAgentRow(page, mentorUniqueId) {
|
|
1807
|
+
return memoryAdminAgentSection(page).getByTestId(`memory-admin-agent-row-${mentorUniqueId}`);
|
|
1808
|
+
}
|
|
1809
|
+
/**
|
|
1810
|
+
* A memory row inside an open popup, found by (part of) its content text.
|
|
1811
|
+
* `scope` is the popup Locator returned by `openUserMemoriesPopup`.
|
|
1812
|
+
*/
|
|
1813
|
+
function memoryRowByContent(scope, content) {
|
|
1814
|
+
return scope.getByTestId('memory-row').filter({ hasText: content });
|
|
1815
|
+
}
|
|
1816
|
+
// ---------------------------------------------------------------------------
|
|
1817
|
+
// Tab navigation
|
|
1818
|
+
// ---------------------------------------------------------------------------
|
|
1819
|
+
/**
|
|
1820
|
+
* Returns false when the Memory rail item isn't rendered in the tenant
|
|
1821
|
+
* settings dialog (non-admin viewer).
|
|
1822
|
+
*/
|
|
1823
|
+
async function isTenantMemoryTabVisible(page) {
|
|
1824
|
+
const railItem = page
|
|
1825
|
+
.getByRole('button', { name: MEMORY_ADMIN_LABELS.tabName, exact: true })
|
|
1826
|
+
.first();
|
|
1827
|
+
try {
|
|
1828
|
+
await expect(railItem).toBeVisible({ timeout: 5000 });
|
|
1829
|
+
return true;
|
|
1830
|
+
}
|
|
1831
|
+
catch (_a) {
|
|
1832
|
+
return false;
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
/**
|
|
1836
|
+
* Open the Memory tab from the tenant settings rail. Assumes the tenant
|
|
1837
|
+
* settings dialog is already open. Completion is gated on the Global sub-tab
|
|
1838
|
+
* trigger rendering (it appears once the memsearch status check resolves).
|
|
1839
|
+
*/
|
|
1840
|
+
async function switchToTenantMemoryTab(page) {
|
|
1841
|
+
// Desktop and mobile rails both render the item; the first match is the
|
|
1842
|
+
// desktop one, which is the visible rail on desktop viewports.
|
|
1843
|
+
const railItem = page
|
|
1844
|
+
.getByRole('button', { name: MEMORY_ADMIN_LABELS.tabName, exact: true })
|
|
1845
|
+
.first();
|
|
1846
|
+
await expect(railItem).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1847
|
+
await railItem.click();
|
|
1848
|
+
await expect(page.getByTestId('memory-admin-sub-tab-global')).toBeVisible({
|
|
1849
|
+
timeout: UI_TIMEOUT$2,
|
|
1850
|
+
});
|
|
1851
|
+
logger.info('Switched to tenant Memory tab');
|
|
1852
|
+
}
|
|
1853
|
+
/**
|
|
1854
|
+
* Switch between the Memory tab's Global / Agent sub-tabs. Completion is
|
|
1855
|
+
* gated on the target section's testid rendering.
|
|
1856
|
+
*/
|
|
1857
|
+
async function switchToMemoryAdminSubTab(page, subTab) {
|
|
1858
|
+
const trigger = page.getByTestId(`memory-admin-sub-tab-${subTab}`);
|
|
1859
|
+
await expect(trigger).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1860
|
+
await trigger.click();
|
|
1861
|
+
const section = subTab === 'global' ? memoryAdminGlobalSection(page) : memoryAdminAgentSection(page);
|
|
1862
|
+
await expect(section).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1863
|
+
logger.info(`Switched to Memory "${subTab}" sub-tab`);
|
|
1864
|
+
}
|
|
1865
|
+
// ---------------------------------------------------------------------------
|
|
1866
|
+
// Global sub-tab: users table + per-user popup
|
|
1867
|
+
// ---------------------------------------------------------------------------
|
|
1868
|
+
/**
|
|
1869
|
+
* Search the users table and gate on the expected user's row appearing.
|
|
1870
|
+
* Terms shorter than three characters search as empty (the Management tab's
|
|
1871
|
+
* debounce contract), so pass at least three characters.
|
|
1872
|
+
*/
|
|
1873
|
+
async function searchMemoryAdminUsers(page, term, expectedUsername) {
|
|
1874
|
+
const input = memoryAdminGlobalSection(page).getByTestId('memory-admin-users-search');
|
|
1875
|
+
await expect(input).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1876
|
+
await input.fill(term);
|
|
1877
|
+
await expect(memoryAdminUserRow(page, expectedUsername)).toBeVisible({
|
|
1878
|
+
timeout: MUTATION_TIMEOUT$2,
|
|
1879
|
+
});
|
|
1880
|
+
logger.info(`Searched memory users for "${term}"`);
|
|
1881
|
+
}
|
|
1882
|
+
/**
|
|
1883
|
+
* Open the global memories popup for a user's row and return the popup's
|
|
1884
|
+
* Locator — pass it as the `popup` argument of every helper below so their
|
|
1885
|
+
* queries stay pinned to the popup instead of the dialogs underneath.
|
|
1886
|
+
* Completion is gated on the popup's list state rendering (rows, the empty
|
|
1887
|
+
* state, or the loading skeletons resolving into either).
|
|
1888
|
+
*/
|
|
1889
|
+
async function openUserMemoriesPopup(page, username) {
|
|
1890
|
+
const viewButton = memoryAdminUserRow(page, username).getByTestId(`memory-admin-user-view-${username}`);
|
|
1891
|
+
await expect(viewButton).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1892
|
+
await viewButton.click();
|
|
1893
|
+
const popup = page.getByTestId('user-memories-modal');
|
|
1894
|
+
await expect(popup).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1895
|
+
await expect(popup.getByTestId('memories-list').or(popup.getByTestId('memories-list-empty'))).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
1896
|
+
logger.info(`Opened global memories popup for "${username}"`);
|
|
1897
|
+
return popup;
|
|
1898
|
+
}
|
|
1899
|
+
/** Close the user memories popup (Escape) and gate on it disappearing. */
|
|
1900
|
+
async function closeUserMemoriesPopup(page) {
|
|
1901
|
+
const popup = page.getByTestId('user-memories-modal');
|
|
1902
|
+
await expect(popup).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1903
|
+
await page.keyboard.press('Escape');
|
|
1904
|
+
await expect(popup).toBeHidden({ timeout: UI_TIMEOUT$2 });
|
|
1905
|
+
}
|
|
1906
|
+
/**
|
|
1907
|
+
* The innermost open dialog whose text matches `title`. Stacked Radix
|
|
1908
|
+
* dialogs portal to the end of `<body>` in mount order, so `.last()` is the
|
|
1909
|
+
* one on top — required here because the add/edit/delete dialogs open above
|
|
1910
|
+
* the popup, which itself sits above the tenant settings dialog.
|
|
1911
|
+
*/
|
|
1912
|
+
function topDialogByTitle(page, title) {
|
|
1913
|
+
return page.getByRole('dialog').filter({ hasText: title }).last();
|
|
1914
|
+
}
|
|
1915
|
+
/** Open a memory row's three-dots menu and click one of its actions. */
|
|
1916
|
+
async function clickMemoryRowAction(page, row, action) {
|
|
1917
|
+
const trigger = row.getByRole('button', {
|
|
1918
|
+
name: new RegExp(`^${MEMORY_ADMIN_LABELS.menu.actionsAriaPrefix}`),
|
|
1919
|
+
});
|
|
1920
|
+
await expect(trigger).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1921
|
+
await trigger.click();
|
|
1922
|
+
// The menu portals to <body>; only one dropdown menu is ever open at once.
|
|
1923
|
+
const item = page.getByRole('menuitem', { name: action, exact: true });
|
|
1924
|
+
await expect(item).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1925
|
+
await item.click();
|
|
1926
|
+
}
|
|
1927
|
+
/**
|
|
1928
|
+
* Add a global memory for the popup's user: opens the Add Memory dialog,
|
|
1929
|
+
* fills the content (minimum 10 characters), saves, and gates on the dialog
|
|
1930
|
+
* closing and the new row appearing in the popup's list.
|
|
1931
|
+
*/
|
|
1932
|
+
async function addUserGlobalMemory(page, popup, content) {
|
|
1933
|
+
const addButton = popup.getByTestId('user-memories-add');
|
|
1934
|
+
await expect(addButton).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1935
|
+
await addButton.click();
|
|
1936
|
+
const dialog = topDialogByTitle(page, MEMORY_ADMIN_LABELS.dialogs.add);
|
|
1937
|
+
await expect(dialog).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1938
|
+
await dialog.locator('#memory-content').fill(content);
|
|
1939
|
+
const saveButton = dialog.getByRole('button', { name: 'Save Memory', exact: true });
|
|
1940
|
+
await expect(saveButton).toBeEnabled({ timeout: UI_TIMEOUT$2 });
|
|
1941
|
+
await saveButton.click();
|
|
1942
|
+
await expect(dialog).toBeHidden({ timeout: MUTATION_TIMEOUT$2 });
|
|
1943
|
+
await expect(memoryRowByContent(popup, content)).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
1944
|
+
logger.info(`Added global memory: "${content}"`);
|
|
1945
|
+
}
|
|
1946
|
+
/**
|
|
1947
|
+
* Edit a global memory found by its current content: three-dots → Edit,
|
|
1948
|
+
* replace the content, save, and gate on the dialog closing and the updated
|
|
1949
|
+
* row appearing in the popup's list.
|
|
1950
|
+
*/
|
|
1951
|
+
async function editUserGlobalMemory(page, popup, currentContent, newContent) {
|
|
1952
|
+
const row = memoryRowByContent(popup, currentContent);
|
|
1953
|
+
await expect(row).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1954
|
+
await clickMemoryRowAction(page, row, MEMORY_ADMIN_LABELS.menu.edit);
|
|
1955
|
+
const dialog = topDialogByTitle(page, MEMORY_ADMIN_LABELS.dialogs.edit);
|
|
1956
|
+
await expect(dialog).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1957
|
+
await dialog.locator('#edit-memory-content').fill(newContent);
|
|
1958
|
+
const saveButton = dialog.getByRole('button', { name: 'Save Memory', exact: true });
|
|
1959
|
+
await expect(saveButton).toBeEnabled({ timeout: UI_TIMEOUT$2 });
|
|
1960
|
+
await saveButton.click();
|
|
1961
|
+
await expect(dialog).toBeHidden({ timeout: MUTATION_TIMEOUT$2 });
|
|
1962
|
+
await expect(memoryRowByContent(popup, newContent)).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
1963
|
+
logger.info(`Edited global memory to: "${newContent}"`);
|
|
1964
|
+
}
|
|
1965
|
+
/**
|
|
1966
|
+
* Delete a global memory found by its content: three-dots → Delete, confirm
|
|
1967
|
+
* in the Delete Memory dialog, and gate on the confirmation closing and the
|
|
1968
|
+
* row leaving the popup's list.
|
|
1969
|
+
*/
|
|
1970
|
+
async function deleteUserGlobalMemory(page, popup, content) {
|
|
1971
|
+
const row = memoryRowByContent(popup, content);
|
|
1972
|
+
await expect(row).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1973
|
+
await clickMemoryRowAction(page, row, MEMORY_ADMIN_LABELS.menu.delete);
|
|
1974
|
+
const confirmDialog = topDialogByTitle(page, MEMORY_ADMIN_LABELS.dialogs.deleteConfirm);
|
|
1975
|
+
await expect(confirmDialog).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1976
|
+
await confirmDialog.getByRole('button', { name: 'Delete', exact: true }).click();
|
|
1977
|
+
await expect(confirmDialog).toBeHidden({ timeout: MUTATION_TIMEOUT$2 });
|
|
1978
|
+
await expect(memoryRowByContent(popup, content)).toBeHidden({ timeout: MUTATION_TIMEOUT$2 });
|
|
1979
|
+
logger.info(`Deleted global memory: "${content}"`);
|
|
1980
|
+
}
|
|
1981
|
+
/**
|
|
1982
|
+
* Toggle one of the user's memory setting switches inside the popup and
|
|
1983
|
+
* gate on its `aria-checked` state flipping (which only happens after the
|
|
1984
|
+
* settings mutation resolves and the query refetches). Returns the new
|
|
1985
|
+
* checked state.
|
|
1986
|
+
*/
|
|
1987
|
+
async function toggleUserMemoryAdminSetting(page, popup, setting) {
|
|
1988
|
+
const switchEl = popup.getByRole('switch', { name: MEMORY_ADMIN_LABELS.switches[setting] });
|
|
1989
|
+
await expect(switchEl).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
1990
|
+
const wasChecked = await switchEl.isChecked();
|
|
1991
|
+
await switchEl.click();
|
|
1992
|
+
await expect(switchEl).toHaveAttribute('aria-checked', String(!wasChecked), {
|
|
1993
|
+
timeout: MUTATION_TIMEOUT$2,
|
|
1994
|
+
});
|
|
1995
|
+
logger.info(`Toggled memory setting "${setting}" from ${wasChecked} to ${!wasChecked}`);
|
|
1996
|
+
return !wasChecked;
|
|
1997
|
+
}
|
|
1998
|
+
// ---------------------------------------------------------------------------
|
|
1999
|
+
// Agent sub-tab: agents table + per-agent popup
|
|
2000
|
+
// ---------------------------------------------------------------------------
|
|
2001
|
+
/**
|
|
2002
|
+
* Filter the agents table to one agent via the autocomplete: types the name,
|
|
2003
|
+
* clicks the matching option, and gates on the selected chip rendering.
|
|
2004
|
+
*/
|
|
2005
|
+
async function filterAgentMemories(page, agentName) {
|
|
2006
|
+
const section = memoryAdminAgentSection(page);
|
|
2007
|
+
const input = section.getByTestId('agent-memories-filter-input');
|
|
2008
|
+
await expect(input).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2009
|
+
await input.fill(agentName);
|
|
2010
|
+
const option = section
|
|
2011
|
+
.getByTestId('agent-memories-filter-results')
|
|
2012
|
+
.getByRole('button', { name: agentName, exact: true });
|
|
2013
|
+
await expect(option).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
2014
|
+
await option.click();
|
|
2015
|
+
await expect(section.getByTestId('agent-memories-filter-selected')).toBeVisible({
|
|
2016
|
+
timeout: UI_TIMEOUT$2,
|
|
2017
|
+
});
|
|
2018
|
+
logger.info(`Filtered agent memories to "${agentName}"`);
|
|
2019
|
+
}
|
|
2020
|
+
/** Clear the agents autocomplete filter (back to the full agents list). */
|
|
2021
|
+
async function clearAgentMemoriesFilter(page) {
|
|
2022
|
+
const section = memoryAdminAgentSection(page);
|
|
2023
|
+
const clearButton = section.getByTestId('agent-memories-filter-clear');
|
|
2024
|
+
await expect(clearButton).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2025
|
+
await clearButton.click();
|
|
2026
|
+
await expect(section.getByTestId('agent-memories-filter-input')).toBeVisible({
|
|
2027
|
+
timeout: UI_TIMEOUT$2,
|
|
2028
|
+
});
|
|
2029
|
+
}
|
|
2030
|
+
/**
|
|
2031
|
+
* Open the memories popup for an agent's row and return the popup's Locator
|
|
2032
|
+
* — pass it as the `popup` argument of `addAgentMemoryFromPopup` and scope
|
|
2033
|
+
* any further queries to it. Completion is gated on the `ManageMemories`
|
|
2034
|
+
* editor rendering its user filter combobox.
|
|
2035
|
+
*/
|
|
2036
|
+
async function openAgentMemoriesPopup(page, mentorUniqueId) {
|
|
2037
|
+
const viewButton = memoryAdminAgentRow(page, mentorUniqueId).getByTestId(`memory-admin-agent-view-${mentorUniqueId}`);
|
|
2038
|
+
await expect(viewButton).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2039
|
+
await viewButton.click();
|
|
2040
|
+
const popup = page.getByTestId('agent-memories-modal');
|
|
2041
|
+
await expect(popup).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2042
|
+
await expect(popup.getByRole('combobox').first()).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
2043
|
+
logger.info(`Opened agent memories popup for "${mentorUniqueId}"`);
|
|
2044
|
+
return popup;
|
|
2045
|
+
}
|
|
2046
|
+
/** Close the agent memories popup (Escape) and gate on it disappearing. */
|
|
2047
|
+
async function closeAgentMemoriesPopup(page) {
|
|
2048
|
+
const popup = page.getByTestId('agent-memories-modal');
|
|
2049
|
+
await expect(popup).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2050
|
+
await page.keyboard.press('Escape');
|
|
2051
|
+
await expect(popup).toBeHidden({ timeout: UI_TIMEOUT$2 });
|
|
2052
|
+
}
|
|
2053
|
+
/**
|
|
2054
|
+
* Add an agent memory through the popup's `ManageMemories` editor: opens its
|
|
2055
|
+
* Add Memory dialog, optionally picks a category, fills the content (minimum
|
|
2056
|
+
* 10 characters), saves, and gates on the dialog closing and the content
|
|
2057
|
+
* appearing in the popup.
|
|
2058
|
+
*/
|
|
2059
|
+
async function addAgentMemoryFromPopup(page, popup, content, categoryName) {
|
|
2060
|
+
const addButton = popup.getByRole('button', { name: MEMORY_ADMIN_LABELS.addMemoryButton });
|
|
2061
|
+
await expect(addButton).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2062
|
+
await addButton.click();
|
|
2063
|
+
const dialog = topDialogByTitle(page, MEMORY_ADMIN_LABELS.dialogs.add);
|
|
2064
|
+
await expect(dialog).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2065
|
+
if (categoryName) {
|
|
2066
|
+
await dialog.getByRole('combobox').click();
|
|
2067
|
+
// Radix Select portals its listbox to <body>; one is open at a time.
|
|
2068
|
+
const option = page.getByRole('option', { name: categoryName, exact: true });
|
|
2069
|
+
await expect(option).toBeVisible({ timeout: UI_TIMEOUT$2 });
|
|
2070
|
+
await option.click();
|
|
2071
|
+
}
|
|
2072
|
+
await dialog.getByRole('textbox').fill(content);
|
|
2073
|
+
const saveButton = dialog.getByRole('button', { name: 'Save', exact: true });
|
|
2074
|
+
await expect(saveButton).toBeEnabled({ timeout: UI_TIMEOUT$2 });
|
|
2075
|
+
await saveButton.click();
|
|
2076
|
+
await expect(dialog).toBeHidden({ timeout: MUTATION_TIMEOUT$2 });
|
|
2077
|
+
await expect(popup.getByText(content)).toBeVisible({ timeout: MUTATION_TIMEOUT$2 });
|
|
2078
|
+
logger.info(`Added agent memory: "${content}"`);
|
|
2079
|
+
}
|
|
2080
|
+
|
|
1715
2081
|
// ============================
|
|
1716
2082
|
// Navigation Helpers
|
|
1717
2083
|
// ============================
|
|
@@ -3863,6 +4229,14 @@ const VOICE_LABELS = {
|
|
|
3863
4229
|
openai: 'OpenAI Voice',
|
|
3864
4230
|
google: 'Google Voice',
|
|
3865
4231
|
},
|
|
4232
|
+
voiceInstructions: {
|
|
4233
|
+
label: 'Voice Instructions',
|
|
4234
|
+
presets: {
|
|
4235
|
+
warm: 'Warm and encouraging',
|
|
4236
|
+
calm: 'Calm and measured',
|
|
4237
|
+
energetic: 'Energetic and upbeat',
|
|
4238
|
+
},
|
|
4239
|
+
},
|
|
3866
4240
|
saveVoiceButton: /save voice settings|saving…/i,
|
|
3867
4241
|
// The "Save" button reads "Save" when no config exists yet and
|
|
3868
4242
|
// "Save changes" once one does. Helpers match both via a regex.
|
|
@@ -4074,6 +4448,62 @@ async function previewVoice(scope, voiceName) {
|
|
|
4074
4448
|
await expect(previewBtn).toBeVisible({ timeout: 10000 });
|
|
4075
4449
|
await previewBtn.click();
|
|
4076
4450
|
}
|
|
4451
|
+
/**
|
|
4452
|
+
* Open the "Voice Instructions" editor modal from its prompt card on the
|
|
4453
|
+
* Voice sub-tab. The card is only rendered when the OpenAI or Google
|
|
4454
|
+
* provider is selected. Mirrors the Prompts / Screen share card pattern:
|
|
4455
|
+
* an "Edit <label>" button popping the rich-text modal.
|
|
4456
|
+
*/
|
|
4457
|
+
async function openVoiceInstructionsEditor(scope) {
|
|
4458
|
+
const btn = scope.getByRole('button', { name: `Edit ${VOICE_LABELS.voiceInstructions.label}` });
|
|
4459
|
+
await expect(btn).toBeVisible({ timeout: 10000 });
|
|
4460
|
+
await btn.click();
|
|
4461
|
+
await expect(asPage$5(scope).getByText(`Edit ${VOICE_LABELS.voiceInstructions.label}`)).toBeVisible({ timeout: 10000 });
|
|
4462
|
+
logger.info('Opened voice-instructions editor');
|
|
4463
|
+
}
|
|
4464
|
+
/**
|
|
4465
|
+
* Replace the "Voice Instructions" text via the editor modal and confirm.
|
|
4466
|
+
* The new value is written to local form state; call `saveVoiceSettings`
|
|
4467
|
+
* afterwards to persist. Pass an empty string to clear the stored
|
|
4468
|
+
* instructions (saving then sends `""`).
|
|
4469
|
+
*/
|
|
4470
|
+
async function setVoiceInstructions(scope, text) {
|
|
4471
|
+
await openVoiceInstructionsEditor(scope);
|
|
4472
|
+
const page = asPage$5(scope);
|
|
4473
|
+
const editor = page.getByRole('dialog').locator('[contenteditable="true"]').first();
|
|
4474
|
+
await expect(editor).toBeVisible({ timeout: 10000 });
|
|
4475
|
+
await editor.click();
|
|
4476
|
+
await page.keyboard.press('ControlOrMeta+A');
|
|
4477
|
+
await page.keyboard.press('Delete');
|
|
4478
|
+
if (text)
|
|
4479
|
+
await editor.pressSequentially(text);
|
|
4480
|
+
// The modal's Save button — scope to dialog so we don't grab the
|
|
4481
|
+
// outer tab's Save.
|
|
4482
|
+
await page
|
|
4483
|
+
.getByRole('dialog')
|
|
4484
|
+
.getByRole('button', { name: /^save$/i })
|
|
4485
|
+
.click();
|
|
4486
|
+
await expect(page.getByRole('dialog')).toBeHidden({ timeout: 10000 });
|
|
4487
|
+
logger.info(`Voice instructions set (${text.length} chars)`);
|
|
4488
|
+
}
|
|
4489
|
+
/**
|
|
4490
|
+
* Assert the voice-instructions prompt card shows the given text.
|
|
4491
|
+
*/
|
|
4492
|
+
async function expectVoiceInstructionsValue(scope, text) {
|
|
4493
|
+
await expect(scope.getByTestId('voice-instructions-card')).toContainText(text, {
|
|
4494
|
+
timeout: 10000,
|
|
4495
|
+
});
|
|
4496
|
+
}
|
|
4497
|
+
/**
|
|
4498
|
+
* Click one of the example preset chips under the voice-instructions
|
|
4499
|
+
* textarea; the chip's canned text replaces the textarea content.
|
|
4500
|
+
*/
|
|
4501
|
+
async function applyVoiceInstructionsPreset(scope, preset) {
|
|
4502
|
+
const chip = scope.getByTestId(`voice-instructions-preset-${preset}`);
|
|
4503
|
+
await expect(chip).toBeVisible({ timeout: 10000 });
|
|
4504
|
+
await chip.click();
|
|
4505
|
+
logger.info(`Applied voice-instructions preset "${preset}"`);
|
|
4506
|
+
}
|
|
4077
4507
|
/**
|
|
4078
4508
|
* Click the Save button on the Voice sub-tab. Asserts the button is
|
|
4079
4509
|
* enabled first (a no-op on a pristine form would be a test bug).
|
|
@@ -6735,6 +7165,14 @@ const LTI_LABELS = {
|
|
|
6735
7165
|
keys: 'No LTI keys yet.',
|
|
6736
7166
|
tools: 'No LTI tools yet.',
|
|
6737
7167
|
},
|
|
7168
|
+
/** Badge text for the async-create link status. */
|
|
7169
|
+
status: {
|
|
7170
|
+
pending: 'Pending',
|
|
7171
|
+
building: 'Building',
|
|
7172
|
+
ready: 'Ready',
|
|
7173
|
+
failed: 'Failed',
|
|
7174
|
+
},
|
|
7175
|
+
retry: 'Retry',
|
|
6738
7176
|
};
|
|
6739
7177
|
/** data-testid values rendered by the LTI components. */
|
|
6740
7178
|
const LTI_TEST_IDS = {
|
|
@@ -6753,6 +7191,9 @@ const LTI_TEST_IDS = {
|
|
|
6753
7191
|
row: 'lti-link-row',
|
|
6754
7192
|
modal: 'lti-link-modal',
|
|
6755
7193
|
nameInput: 'lti-link-name-input',
|
|
7194
|
+
status: 'lti-link-status',
|
|
7195
|
+
retryButton: 'lti-link-retry-button',
|
|
7196
|
+
refreshButton: 'lti-links-refresh-button',
|
|
6756
7197
|
},
|
|
6757
7198
|
keys: {
|
|
6758
7199
|
section: 'lti-keys-section',
|
|
@@ -6899,7 +7340,12 @@ async function submitLinkModal(scope) {
|
|
|
6899
7340
|
await submit.click();
|
|
6900
7341
|
await expect(getLinkModal(scope)).toBeHidden({ timeout: 15000 });
|
|
6901
7342
|
}
|
|
6902
|
-
/**
|
|
7343
|
+
/**
|
|
7344
|
+
* Full create-link flow. Creation is asynchronous on the backend (202 +
|
|
7345
|
+
* celery build): the modal closes immediately and the row appears with a
|
|
7346
|
+
* Pending/Building status badge. Follow with `waitForLinkReady` before
|
|
7347
|
+
* asserting on `target_link_uri` or editing the link.
|
|
7348
|
+
*/
|
|
6903
7349
|
async function createLink(scope, name) {
|
|
6904
7350
|
await openCreateLinkModal(scope);
|
|
6905
7351
|
await fillLinkName(scope, name);
|
|
@@ -6925,6 +7371,54 @@ async function expectLinkNotInList(scope, name) {
|
|
|
6925
7371
|
async function expectLinkTargetUri(scope, name, targetUri) {
|
|
6926
7372
|
await expect(getLinkRow(scope, name)).toContainText(targetUri, { timeout: 10000 });
|
|
6927
7373
|
}
|
|
7374
|
+
function getLinkStatusBadge(scope, name) {
|
|
7375
|
+
return getLinkRow(scope, name).getByTestId(LTI_TEST_IDS.links.status);
|
|
7376
|
+
}
|
|
7377
|
+
async function expectLinkStatus(scope, name, status) {
|
|
7378
|
+
await expect(getLinkStatusBadge(scope, name)).toHaveAttribute('data-status', status, {
|
|
7379
|
+
timeout: 10000,
|
|
7380
|
+
});
|
|
7381
|
+
}
|
|
7382
|
+
/** The Refresh button shown in the Links header while a build is in flight. */
|
|
7383
|
+
function getLinksRefreshButton(scope) {
|
|
7384
|
+
return getLinksSection(scope).getByTestId(LTI_TEST_IDS.links.refreshButton);
|
|
7385
|
+
}
|
|
7386
|
+
/** Manually refresh the links list (visible only while a build is in flight). */
|
|
7387
|
+
async function refreshLinks(scope) {
|
|
7388
|
+
await getLinksRefreshButton(scope).click();
|
|
7389
|
+
}
|
|
7390
|
+
/**
|
|
7391
|
+
* Wait for the async link build to finish (`ready`). The build creates an edX
|
|
7392
|
+
* course via celery, so allow a generous timeout (default 3 minutes). The UI
|
|
7393
|
+
* does not auto-poll — this helper clicks the header Refresh button every few
|
|
7394
|
+
* seconds until the row's badge reports `ready` (throws if it turns `failed`).
|
|
7395
|
+
*/
|
|
7396
|
+
async function waitForLinkReady(scope, name, timeoutMs = 180000) {
|
|
7397
|
+
const badge = getLinkStatusBadge(scope, name);
|
|
7398
|
+
const deadline = Date.now() + timeoutMs;
|
|
7399
|
+
for (;;) {
|
|
7400
|
+
const status = await badge.getAttribute('data-status');
|
|
7401
|
+
if (status === 'ready')
|
|
7402
|
+
break;
|
|
7403
|
+
if (status === 'failed') {
|
|
7404
|
+
throw new Error(`LTI link build failed: ${name}`);
|
|
7405
|
+
}
|
|
7406
|
+
if (Date.now() >= deadline) {
|
|
7407
|
+
throw new Error(`Timed out waiting for LTI link to be ready: ${name} (last: ${status})`);
|
|
7408
|
+
}
|
|
7409
|
+
await asPage$1(scope).waitForTimeout(5000);
|
|
7410
|
+
await refreshLinks(scope);
|
|
7411
|
+
}
|
|
7412
|
+
logger.info(`LTI link ready: ${name}`);
|
|
7413
|
+
}
|
|
7414
|
+
/**
|
|
7415
|
+
* Retry a failed link build via the row's Retry button (deletes the failed
|
|
7416
|
+
* entity and re-posts the original payload).
|
|
7417
|
+
*/
|
|
7418
|
+
async function retryFailedLink(scope, name) {
|
|
7419
|
+
await getLinkRow(scope, name).getByTestId(LTI_TEST_IDS.links.retryButton).click();
|
|
7420
|
+
logger.info(`Retried LTI link: ${name}`);
|
|
7421
|
+
}
|
|
6928
7422
|
// ═══════════════════════════════════════════════════════════════════════
|
|
6929
7423
|
// Sub-tab 2 — Keys
|
|
6930
7424
|
// ═══════════════════════════════════════════════════════════════════════
|
|
@@ -7848,5 +8342,5 @@ function createPlaywrightConfig(options) {
|
|
|
7848
8342
|
});
|
|
7849
8343
|
}
|
|
7850
8344
|
|
|
7851
|
-
export { AuthFlowBuilder, CHAT_PRIVACY_LABELS, CustomReporter, EVALS_LABELS, GRADER_LABELS, LTI_LABELS, LTI_TEST_IDS, MailsacClient, PRIVACY_LABELS, SCREENSHARE_LABELS, SPEND_LIMITS_LABELS, SUPPORT_LABELS, TASKS_LABELS, VOICE_LABELS, addGraderCriterion, addManualScore, addMemory, addQaPairsManually, addSkillToAgent, addTextResource, addUserSpendLimit, addUserSpendLimitFromTenantBilling, agentLimitsRow, agentLimitsSection, archiveFirstMemory, archiveMemoryByContent, billingAutoRechargeSection, billingCreditsSection, billingPlanSection, buildReportUrl, canChatWithEmbedMentor, cancelDeleteEvaluation, cancelDeleteInstance, cancelDeleteSkill, cancelDisconnectInstance, cancelEnableChatPrivacyMidSession, cancelKeyDelete, cancelLlmJudge, cancelNewInstanceDialog, cancelStartEvaluation, checkAdminStatus, checkRunStatus, clearAgentLimitsFilter, clearDateRangeFilter, clearGradeResultOverride, clearInstanceSearch, clearUserFilter, clickBackHome, clickBillingAddCredits, clickBillingManageBilling, clickBillingManageUsage, clickBillingUpgrade, clickChatPrivacyToggle, clickDownloadAgain, clickManualDownloadLink, clickSetSpendLimitForFilteredAgent, closeAgentLimitsPopup, closeBenchmarkItemsDialog, closeCreditBalanceDropdown, closeEvaluationDetailDialog, closeKeyDetail, closeManageBenchmarksDialog, closeWithEsc, confirmEnableChatPrivacyMidSession, confirmKeyDelete, connectToInstance, copyEndpoint, createAgentSpendLimitViaFilter, createAuthSetup, createBenchmark, createEnvConfig, createInstance, createKey, createLink, createPlaywrightConfig, createSkill, createSupportTicketViaChatAndVerify, createTool, creditBalancePanel, creditBalancePlanBadge, creditBalanceTrigger, deleteAgentSpendLimit, deleteAgentSpendLimitFromTenantBilling, deleteEvaluation, deleteFirstMemory, deleteGraderCriterion, deleteInstance, deleteKey, deleteMemoryByContent, deleteQaItem, deleteResource, deleteSkill, deleteTask, deleteUserSpendLimit, deleteWorkspaceSpendLimit, disableSkill, disableSupport, disconnectInstance, editAgentPrompt, editGraderCriterion, editInstance, editLink, editSkill, editTextResource, editTool, editUserSpendLimit, enableSkill, enableSupport, expandReview, expandTrace, expectAgentLimitsRowContent, expectAllEndpointsVisible, expectBenchmarkListed, expectBillingAutoRechargeSection, expectBillingCreditsSection, expectBillingPlanSection, expectBillingTabForCurrentPlan, expectBillingTabForFreePlan, expectBillingTabForPremiumPlan, expectBillingTabForTrialPlan, expectCallConfigVisible, expectCallConfigVoiceTriggerShows, expectChatPrivacyConfirmDialogOpen, expectChatPrivacyLocked, expectChatPrivacySource, expectChatPrivacyState, expectChatPrivacyToggleVisible, expectCompletedTasks, expectCreditBalanceForCurrentPlan, expectCreditBalancePanelForFreePlan, expectCreditBalancePanelForPremiumPlan, expectCreditBalancePanelForTrialPlan, expectCreditBalanceVisibilityForTenant, expectDetailWaitingForTraces, expectEndpointUrl, expectEntitySelected, expectFailedTasks, expectGradeResultRow, expectGraderMisconfiguredWarning, expectGraderTotalPoints, expectKeyDeleteError, expectKeyInList, expectKeyNotInList, expectKeysEmpty, expectLastCriterionDeleteDisabled, expectLinkInList, expectLinkNotInList, expectLinkTargetUri, expectLinksEmpty, expectLogDetailsStatus, expectLogsForTask, expectLtiHeader, expectMentorVoiceTriggerShows, expectMessageInConversation, expectNoAccessibilityViolations, expectNoAccessibilityViolationsOnDialogs, expectNoBenchmarksNotice, expectNoLogsForSelectedTask, expectNoRepliesYet, expectNoTickets, expectOutputFilterEnabled, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, expectPrivateModeSelected, expectPrivateModeTabReady, expectQaItemListed, expectReviewInList, expectReviewStatus, expectRunInTable, expectRunNotInTable, expectRunStatus, expectRunsTableEmpty, expectScheduleStartTimeInPastError, expectScreenShareDisabledHint, expectSelectedBenchmark, expectSttSelectDisabled, expectTaskInList, expectTaskNotInList, expectTaskStatus, expectTasksEmpty, expectTenantChatPrivacyEnabled, expectTenantChatPrivacyVisible, expectTicketClosedNotice, expectTicketDescriptionContains, expectTicketInList, expectTicketStatusInList, expectToolInList, expectToolNotInList, expectToolsEmpty, expectTotalTasks, expectTraceScore, expectTtsSelectDisabled, expectVoiceProviderSelected, expectVoiceVisible, expectWorkspaceActualSpendStats, expectWorkspaceSpendStats, exportRunCsv, fillLinkName, fillToolForm, filterAgentLimits, filterByAction, filterByActionAndVerify, filterByActor, filterByActorAndVerify, filterByDateRange, filterGradeResultsByEmail, filterTicketsByStatus, filterTicketsByUser, generateBrowserSetupProjects, generateProjectConfig, getAddItemsDialog, getAuditLogRowCount, getAvailableActors, getBenchmarkCombobox, getBenchmarkComboboxDropdown, getBenchmarkItemsDialog, getBillingAutoRechargeStatus, getBillingPlanLabel, getBrowserKey, getCallConfigForm, getChatInput, getChatPrivacyConfirmDialog, getChatPrivacyToggle, getCreateBenchmarkDialog, getCreateKeyButton, getCreateLinkButton, getCreateToolButton, getCreditBalancePlanLabel, getCreditBalanceRemaining, getCurrentModel, getCurrentTenantShowPaywall, getDeleteEvaluationDialog, getDeleteQaItemDialog, getEditAgentDialog, getEndpoint, getEndpointCopyButton, getEndpointUrl, getEntityChip, getEvaluationDetailDialog, getInstanceHealthLabel, getInstanceRowCount, getInstanceStatusLabel, getKeyActionsTrigger, getKeyCreateModal, getKeyCreateNameInput, getKeyDeleteModal, getKeyDetailModal, getKeyDetailNameInput, getKeyPublicJwkField, getKeyPublicKeyField, getKeyRow, getKeysEmptyState, getKeysSection, getLinkCopyTargetUriButton, getLinkEditButton, getLinkModal, getLinkNameInput, getLinkRow, getLinksEmptyState, getLinksSection, getLlmJudgeDialog, getLlmPickerDialog, getLtiSubTab, getManageBenchmarksButton, getManageBenchmarksDialog, getMemoryCount, getMentorIdFromUrl, getNewEvaluationButton, getOutputFilterSwitch, getPaginationInfo, getPrivateModeCard, getReplyComposer, getReviewRow, getRunRow, getScheduleTaskButton, getSearchInput, getSkillRowCount, getStartEvaluationDialog, getStatusFilter, getSupportInfoBox, getSupportTabTrigger, getSupportToggle, getTaskRow, getTenantChatPrivacyRow, getTenantChatPrivacySwitch, getTicketDescription, getTicketDetail, getTicketList, getTicketRow, getTicketRowByIndex, getToolEditButton, getToolKeySelect, getToolModal, getToolRow, getToolsEmptyState, getToolsSection, getTraceRow, getUserFilter, getVoiceProviderCard, getVoiceRow, goToFirstPage, goToLastPage, goToNextPage, goToPage, goToPreviousPage, goToSkillsListPage, graderTabBody, inviteUserTest, isEvaluationTabVisible, isFirefox, isGraderTabVisible, isGradingEnabled, isJSON, isLtiTabVisible, isMemoryTabVisible, isOnFirstPage, isOnLastPage, isPrivacyTabVisible, isPrivateModeTabVisible, isSandboxTabVisible, isScreenShareTabVisible, isSkillEnabled, isSpendLimitsTabVisible, isSupportEnabled, isSupportTabVisible, isTasksTabVisible, isVoiceTabVisible, logger, loginWithEmailAndPassword, loginWithMicrosoftIdp, navigateToAccountComponent, navigateToAuditLog, navigateToAuditLogAndWaitForData, navigateToDataReports, navigateToReportDownload, openAddItemsDialog, openAddMemoryDialog, openAgentLimitsManage, openAgentPromptEditModal, openBenchmarkItems, openCallConfigVoicePicker, openCreateKeyModal, openCreateLinkModal, openCreateToolModal, openCreditBalanceDropdown, openEditInstanceDialog, openEditLinkModal, openEditSkillDialog, openEditToolModal, openFirstLogDetails, openInstanceActionsMenu, openKeyActionsMenu, openKeyDelete, openKeyDetail, openLLMProviderPicker, openManageBenchmarksDialog, openMentorVoicePicker, openNewInstanceDialog, openNewReviewForRun, openNewReviewFromDetail, openNewSkillDialog, openRunActionsMenu, openRunResults, openScheduleTaskDialog, openScreenSharePromptEditor, openSkillActionsMenu, openSlashSkillPicker, openStartEvaluationDialog, openTicket, overrideGradeResult, parseReportUrlParams, previewCallConfigVoiceInline, previewMentorVoiceInline, previewVoice, pushConfiguration, readEndpointUrl, readKeyPublicJwk, readKeyPublicKey, refreshEvaluationDetail, refreshTickets, reliableClick, reliableFill, removeSkillFromAgent, removeTraceScore, renameKey, replyToTicket, requestSupportTicketViaChat, resetCallConfig, retry, runConnectedInstanceChecks, runInstanceChecks, safeWaitForURL, saveCallConfig, saveGraderConfig, saveScreenSharePrompts, saveVoiceSettings, scheduleTask, searchBenchmarks, searchInstances, searchTasks, searchVoices, selectBenchmark, selectCallMode, selectDateFromCalendar, selectJudgeLlm, selectLLMModel, selectLlmProvider, selectPrivacyAction, selectPrivateMode, selectSlashSkill, selectSttProvider, selectTaskInList, selectToolKeySetMode, selectToolSigningKey, selectTtsProvider, selectVoice, selectVoiceProvider, sendAgentChatMessage, setAgentLimitsRowEnabled, setAgentSpendLimit, setAgentSpendLimitFromTenantBilling, setBlockMessage, setCallLanguage, setCatalogSkillEnabled, setEnableVideo, setEntitySelected, setGradingEnabled, setOutputFilterEnabled, setScreenSharePrompt, setSupportEnabled, setTenantChatPrivacyEnabled, setTicketStatus, setUseFunctionCallingEnabled, setUserSpendLimitEnabled, setWorkspaceSpendLimit, setupSandboxInstance, shouldAddNewRowWhenClickingAddRowButton, shouldAllowEditingCellValuesInCSVEditor, shouldCancelCombiningReports, shouldCloseCSVEditorWhenClickingCloseButton, shouldCloseCSVEditorWithoutSavingWhenClickingCancel, shouldCombineRecommendationReports, shouldDirectlyDownloadChatHistoryReportWithoutCSVEditor, shouldDisableOtherDownloadButtonsWhileGeneratingReport, shouldDisplayCSVInEditableTableFormat, shouldDisplayReportCards, shouldHaveCombinedReportDataTestIds, shouldOpenCSVEditorDialog, shouldOpenCSVEditorForUserMetadataReport, shouldSaveEditedCSVAndTriggerDownload, shouldShowCombiningReportsDialog, shouldVerifyCSVEditorDialogAccessibility, signUpWithEmailAndPassword, spendLimitsTabBody, startEvaluation, submitLinkModal, submitLlmJudge, submitToolModal, switchToAddItemsSubTab, switchToAgentLimits, switchToAgentSkillsSubTab, switchToAvailableSkillsSubTab, switchToEvaluationTab, switchToGraderSubTab, switchToGraderTab, switchToLtiSubTab, switchToLtiTab, switchToMemoryTab, switchToPlanAndCredits, switchToPrivacyTab, switchToPrivateModeTab, switchToSandboxTab, switchToScreenShareTab, switchToSkillResourcesSubTab, switchToSkillsTab, switchToSpendLimitsSubTab, switchToSpendLimitsTab, switchToSupportTab, switchToTasksTab, switchToVoiceSubTab, switchToVoiceTab, switchToWorkspaceSpendLimits, teardownSandboxInstance, test, toggleAutoPush, toggleMemorySwitch, toggleSkill, toolFields, uploadAssetResource, uploadQaCsv, userSpendLimitRow, verifyAgentConfigPromptsVisible, verifyAgentSkillsEmptyState, verifyAuditLogEmptyState, verifyAuditLogEntryStructure, verifyAuditLogGenericError, verifyAuditLogLoading, verifyAuditLogPermissionError, verifyAuditLogTableVisible, verifyConnectDisabledForUnhealthy, verifyConnectedInstanceCard, verifyCurrentPage, verifyDonePhase, verifyDownloadingPhase, verifyErrorPhase, verifyInstanceTableEmpty, verifyInstanceTableVisible, verifyMemoryExists, verifyMemoryNotExists, verifyMemoryTabMemoriesList, verifyMemoryTabSettings, verifyPreparingPhase, verifySkillAdded, verifySkillVisible, verifySkillsEmptyState, verifySkillsTabVisible, waitForAgentChatResponse, waitForAuditLogDataLoaded, waitForBillingTabReady, waitForCreditBalanceLoaded, waitForDialogReady, waitForElementStable, waitForPageLoad, waitForPageReady, waitForReportDownload, waitForTicketInList, workspaceSpendLimitSection };
|
|
8345
|
+
export { AuthFlowBuilder, CHAT_PRIVACY_LABELS, CustomReporter, EVALS_LABELS, GRADER_LABELS, LTI_LABELS, LTI_TEST_IDS, MEMORY_ADMIN_LABELS, MailsacClient, PRIVACY_LABELS, SCREENSHARE_LABELS, SPEND_LIMITS_LABELS, SUPPORT_LABELS, TASKS_LABELS, VOICE_LABELS, addAgentMemoryFromPopup, addGraderCriterion, addManualScore, addMemory, addQaPairsManually, addSkillToAgent, addTextResource, addUserGlobalMemory, addUserSpendLimit, addUserSpendLimitFromTenantBilling, agentLimitsRow, agentLimitsSection, applyVoiceInstructionsPreset, archiveFirstMemory, archiveMemoryByContent, billingAutoRechargeSection, billingCreditsSection, billingPlanSection, buildReportUrl, canChatWithEmbedMentor, cancelDeleteEvaluation, cancelDeleteInstance, cancelDeleteSkill, cancelDisconnectInstance, cancelEnableChatPrivacyMidSession, cancelKeyDelete, cancelLlmJudge, cancelNewInstanceDialog, cancelStartEvaluation, checkAdminStatus, checkRunStatus, clearAgentLimitsFilter, clearAgentMemoriesFilter, clearDateRangeFilter, clearGradeResultOverride, clearInstanceSearch, clearUserFilter, clickBackHome, clickBillingAddCredits, clickBillingManageBilling, clickBillingManageUsage, clickBillingUpgrade, clickChatPrivacyToggle, clickDownloadAgain, clickManualDownloadLink, clickSetSpendLimitForFilteredAgent, closeAgentLimitsPopup, closeAgentMemoriesPopup, closeBenchmarkItemsDialog, closeCreditBalanceDropdown, closeEvaluationDetailDialog, closeKeyDetail, closeManageBenchmarksDialog, closeUserMemoriesPopup, closeWithEsc, confirmEnableChatPrivacyMidSession, confirmKeyDelete, connectToInstance, copyEndpoint, createAgentSpendLimitViaFilter, createAuthSetup, createBenchmark, createEnvConfig, createInstance, createKey, createLink, createPlaywrightConfig, createSkill, createSupportTicketViaChatAndVerify, createTool, creditBalancePanel, creditBalancePlanBadge, creditBalanceTrigger, deleteAgentSpendLimit, deleteAgentSpendLimitFromTenantBilling, deleteEvaluation, deleteFirstMemory, deleteGraderCriterion, deleteInstance, deleteKey, deleteMemoryByContent, deleteQaItem, deleteResource, deleteSkill, deleteTask, deleteUserGlobalMemory, deleteUserSpendLimit, deleteWorkspaceSpendLimit, disableSkill, disableSupport, disconnectInstance, editAgentPrompt, editGraderCriterion, editInstance, editLink, editSkill, editTextResource, editTool, editUserGlobalMemory, editUserSpendLimit, enableSkill, enableSupport, expandReview, expandTrace, expectAgentLimitsRowContent, expectAllEndpointsVisible, expectBenchmarkListed, expectBillingAutoRechargeSection, expectBillingCreditsSection, expectBillingPlanSection, expectBillingTabForCurrentPlan, expectBillingTabForFreePlan, expectBillingTabForPremiumPlan, expectBillingTabForTrialPlan, expectCallConfigVisible, expectCallConfigVoiceTriggerShows, expectChatPrivacyConfirmDialogOpen, expectChatPrivacyLocked, expectChatPrivacySource, expectChatPrivacyState, expectChatPrivacyToggleVisible, expectCompletedTasks, expectCreditBalanceForCurrentPlan, expectCreditBalancePanelForFreePlan, expectCreditBalancePanelForPremiumPlan, expectCreditBalancePanelForTrialPlan, expectCreditBalanceVisibilityForTenant, expectDetailWaitingForTraces, expectEndpointUrl, expectEntitySelected, expectFailedTasks, expectGradeResultRow, expectGraderMisconfiguredWarning, expectGraderTotalPoints, expectKeyDeleteError, expectKeyInList, expectKeyNotInList, expectKeysEmpty, expectLastCriterionDeleteDisabled, expectLinkInList, expectLinkNotInList, expectLinkStatus, expectLinkTargetUri, expectLinksEmpty, expectLogDetailsStatus, expectLogsForTask, expectLtiHeader, expectMentorVoiceTriggerShows, expectMessageInConversation, expectNoAccessibilityViolations, expectNoAccessibilityViolationsOnDialogs, expectNoBenchmarksNotice, expectNoLogsForSelectedTask, expectNoRepliesYet, expectNoTickets, expectOutputFilterEnabled, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, expectPrivateModeSelected, expectPrivateModeTabReady, expectQaItemListed, expectReviewInList, expectReviewStatus, expectRunInTable, expectRunNotInTable, expectRunStatus, expectRunsTableEmpty, expectScheduleStartTimeInPastError, expectScreenShareDisabledHint, expectSelectedBenchmark, expectSttSelectDisabled, expectTaskInList, expectTaskNotInList, expectTaskStatus, expectTasksEmpty, expectTenantChatPrivacyEnabled, expectTenantChatPrivacyVisible, expectTicketClosedNotice, expectTicketDescriptionContains, expectTicketInList, expectTicketStatusInList, expectToolInList, expectToolNotInList, expectToolsEmpty, expectTotalTasks, expectTraceScore, expectTtsSelectDisabled, expectVoiceInstructionsValue, expectVoiceProviderSelected, expectVoiceVisible, expectWorkspaceActualSpendStats, expectWorkspaceSpendStats, exportRunCsv, fillLinkName, fillToolForm, filterAgentLimits, filterAgentMemories, filterByAction, filterByActionAndVerify, filterByActor, filterByActorAndVerify, filterByDateRange, filterGradeResultsByEmail, filterTicketsByStatus, filterTicketsByUser, generateBrowserSetupProjects, generateProjectConfig, getAddItemsDialog, getAuditLogRowCount, getAvailableActors, getBenchmarkCombobox, getBenchmarkComboboxDropdown, getBenchmarkItemsDialog, getBillingAutoRechargeStatus, getBillingPlanLabel, getBrowserKey, getCallConfigForm, getChatInput, getChatPrivacyConfirmDialog, getChatPrivacyToggle, getCreateBenchmarkDialog, getCreateKeyButton, getCreateLinkButton, getCreateToolButton, getCreditBalancePlanLabel, getCreditBalanceRemaining, getCurrentModel, getCurrentTenantShowPaywall, getDeleteEvaluationDialog, getDeleteQaItemDialog, getEditAgentDialog, getEndpoint, getEndpointCopyButton, getEndpointUrl, getEntityChip, getEvaluationDetailDialog, getInstanceHealthLabel, getInstanceRowCount, getInstanceStatusLabel, getKeyActionsTrigger, getKeyCreateModal, getKeyCreateNameInput, getKeyDeleteModal, getKeyDetailModal, getKeyDetailNameInput, getKeyPublicJwkField, getKeyPublicKeyField, getKeyRow, getKeysEmptyState, getKeysSection, getLinkCopyTargetUriButton, getLinkEditButton, getLinkModal, getLinkNameInput, getLinkRow, getLinksEmptyState, getLinksRefreshButton, getLinksSection, getLlmJudgeDialog, getLlmPickerDialog, getLtiSubTab, getManageBenchmarksButton, getManageBenchmarksDialog, getMemoryCount, getMentorIdFromUrl, getNewEvaluationButton, getOutputFilterSwitch, getPaginationInfo, getPrivateModeCard, getReplyComposer, getReviewRow, getRunRow, getScheduleTaskButton, getSearchInput, getSkillRowCount, getStartEvaluationDialog, getStatusFilter, getSupportInfoBox, getSupportTabTrigger, getSupportToggle, getTaskRow, getTenantChatPrivacyRow, getTenantChatPrivacySwitch, getTicketDescription, getTicketDetail, getTicketList, getTicketRow, getTicketRowByIndex, getToolEditButton, getToolKeySelect, getToolModal, getToolRow, getToolsEmptyState, getToolsSection, getTraceRow, getUserFilter, getVoiceProviderCard, getVoiceRow, goToFirstPage, goToLastPage, goToNextPage, goToPage, goToPreviousPage, goToSkillsListPage, graderTabBody, inviteUserTest, isEvaluationTabVisible, isFirefox, isGraderTabVisible, isGradingEnabled, isJSON, isLtiTabVisible, isMemoryTabVisible, isOnFirstPage, isOnLastPage, isPrivacyTabVisible, isPrivateModeTabVisible, isSandboxTabVisible, isScreenShareTabVisible, isSkillEnabled, isSpendLimitsTabVisible, isSupportEnabled, isSupportTabVisible, isTasksTabVisible, isTenantMemoryTabVisible, isVoiceTabVisible, logger, loginWithEmailAndPassword, loginWithMicrosoftIdp, memoryAdminAgentRow, memoryAdminAgentSection, memoryAdminGlobalSection, memoryAdminUserRow, memoryRowByContent, navigateToAccountComponent, navigateToAuditLog, navigateToAuditLogAndWaitForData, navigateToDataReports, navigateToReportDownload, openAddItemsDialog, openAddMemoryDialog, openAgentLimitsManage, openAgentMemoriesPopup, openAgentPromptEditModal, openBenchmarkItems, openCallConfigVoicePicker, openCreateKeyModal, openCreateLinkModal, openCreateToolModal, openCreditBalanceDropdown, openEditInstanceDialog, openEditLinkModal, openEditSkillDialog, openEditToolModal, openFirstLogDetails, openInstanceActionsMenu, openKeyActionsMenu, openKeyDelete, openKeyDetail, openLLMProviderPicker, openManageBenchmarksDialog, openMentorVoicePicker, openNewInstanceDialog, openNewReviewForRun, openNewReviewFromDetail, openNewSkillDialog, openRunActionsMenu, openRunResults, openScheduleTaskDialog, openScreenSharePromptEditor, openSkillActionsMenu, openSlashSkillPicker, openStartEvaluationDialog, openTicket, openUserMemoriesPopup, openVoiceInstructionsEditor, overrideGradeResult, parseReportUrlParams, previewCallConfigVoiceInline, previewMentorVoiceInline, previewVoice, pushConfiguration, readEndpointUrl, readKeyPublicJwk, readKeyPublicKey, refreshEvaluationDetail, refreshLinks, refreshTickets, reliableClick, reliableFill, removeSkillFromAgent, removeTraceScore, renameKey, replyToTicket, requestSupportTicketViaChat, resetCallConfig, retry, retryFailedLink, runConnectedInstanceChecks, runInstanceChecks, safeWaitForURL, saveCallConfig, saveGraderConfig, saveScreenSharePrompts, saveVoiceSettings, scheduleTask, searchBenchmarks, searchInstances, searchMemoryAdminUsers, searchTasks, searchVoices, selectBenchmark, selectCallMode, selectDateFromCalendar, selectJudgeLlm, selectLLMModel, selectLlmProvider, selectPrivacyAction, selectPrivateMode, selectSlashSkill, selectSttProvider, selectTaskInList, selectToolKeySetMode, selectToolSigningKey, selectTtsProvider, selectVoice, selectVoiceProvider, sendAgentChatMessage, setAgentLimitsRowEnabled, setAgentSpendLimit, setAgentSpendLimitFromTenantBilling, setBlockMessage, setCallLanguage, setCatalogSkillEnabled, setEnableVideo, setEntitySelected, setGradingEnabled, setOutputFilterEnabled, setScreenSharePrompt, setSupportEnabled, setTenantChatPrivacyEnabled, setTicketStatus, setUseFunctionCallingEnabled, setUserSpendLimitEnabled, setVoiceInstructions, setWorkspaceSpendLimit, setupSandboxInstance, shouldAddNewRowWhenClickingAddRowButton, shouldAllowEditingCellValuesInCSVEditor, shouldCancelCombiningReports, shouldCloseCSVEditorWhenClickingCloseButton, shouldCloseCSVEditorWithoutSavingWhenClickingCancel, shouldCombineRecommendationReports, shouldDirectlyDownloadChatHistoryReportWithoutCSVEditor, shouldDisableOtherDownloadButtonsWhileGeneratingReport, shouldDisplayCSVInEditableTableFormat, shouldDisplayReportCards, shouldHaveCombinedReportDataTestIds, shouldOpenCSVEditorDialog, shouldOpenCSVEditorForUserMetadataReport, shouldSaveEditedCSVAndTriggerDownload, shouldShowCombiningReportsDialog, shouldVerifyCSVEditorDialogAccessibility, signUpWithEmailAndPassword, spendLimitsTabBody, startEvaluation, submitLinkModal, submitLlmJudge, submitToolModal, switchToAddItemsSubTab, switchToAgentLimits, switchToAgentSkillsSubTab, switchToAvailableSkillsSubTab, switchToEvaluationTab, switchToGraderSubTab, switchToGraderTab, switchToLtiSubTab, switchToLtiTab, switchToMemoryAdminSubTab, switchToMemoryTab, switchToPlanAndCredits, switchToPrivacyTab, switchToPrivateModeTab, switchToSandboxTab, switchToScreenShareTab, switchToSkillResourcesSubTab, switchToSkillsTab, switchToSpendLimitsSubTab, switchToSpendLimitsTab, switchToSupportTab, switchToTasksTab, switchToTenantMemoryTab, switchToVoiceSubTab, switchToVoiceTab, switchToWorkspaceSpendLimits, teardownSandboxInstance, test, toggleAutoPush, toggleMemorySwitch, toggleSkill, toggleUserMemoryAdminSetting, toolFields, uploadAssetResource, uploadQaCsv, userSpendLimitRow, verifyAgentConfigPromptsVisible, verifyAgentSkillsEmptyState, verifyAuditLogEmptyState, verifyAuditLogEntryStructure, verifyAuditLogGenericError, verifyAuditLogLoading, verifyAuditLogPermissionError, verifyAuditLogTableVisible, verifyConnectDisabledForUnhealthy, verifyConnectedInstanceCard, verifyCurrentPage, verifyDonePhase, verifyDownloadingPhase, verifyErrorPhase, verifyInstanceTableEmpty, verifyInstanceTableVisible, verifyMemoryExists, verifyMemoryNotExists, verifyMemoryTabMemoriesList, verifyMemoryTabSettings, verifyPreparingPhase, verifySkillAdded, verifySkillVisible, verifySkillsEmptyState, verifySkillsTabVisible, waitForAgentChatResponse, waitForAuditLogDataLoaded, waitForBillingTabReady, waitForCreditBalanceLoaded, waitForDialogReady, waitForElementStable, waitForLinkReady, waitForPageLoad, waitForPageReady, waitForReportDownload, waitForTicketInList, workspaceSpendLimitSection };
|
|
7852
8346
|
//# sourceMappingURL=index.esm.js.map
|