Skip to content

Commit ed4445e

Browse files
committed
Merge branch 'wip/fx26-ci' into wip/platform-org-wiring
2 parents ee09784 + 2b74302 commit ed4445e

12 files changed

Lines changed: 55 additions & 45 deletions

File tree

‎apps/sim/app/(product)/_components/workspace/workflows/command-list/command-list.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export function CommandList() {
6262
* Mirrors the behavior of the corresponding global keyboard shortcuts:
6363
* - New Agent: add an agent block to the canvas
6464
* - Logs: navigate to workspace logs
65-
* - Search Blocks: focus the toolbar's block search
65+
* - Search blocks: focus the toolbar's block search
6666
*
6767
* @param label - Command label that was clicked.
6868
*/
@@ -78,7 +78,7 @@ export function CommandList() {
7878
router.push(hrefFor(workspacePath(workspaceId, 'logs')))
7979
return
8080
}
81-
case 'Search Blocks': {
81+
case 'Search blocks': {
8282
invokeGlobalCommand('focus-toolbar-search')
8383
return
8484
}

‎apps/sim/app/(product)/o/[organizationId]/integrations/_components/integration-capabilities/integration-capabilities.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export function IntegrationCapabilities({
7272
instructions: skill.content,
7373
source: { providerId, name: skill.name },
7474
}}
75-
createLabel='Add to Skills'
75+
createLabel='Add to skills'
7676
deleteLabel='Remove from Skills'
7777
onSave={onSave}
7878
onClose={() => setSkill(null)}

‎apps/sim/platform/checks/integration-center.spec.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,14 @@ test('shared creation needs a recipient and deletion affects only the confirmed
202202
).toBeVisible()
203203
const savedEditor = editor
204204
await savedEditor.getByRole('button', { name: 'Delete skill', exact: true }).click()
205-
const confirmation = page.getByRole('dialog', {
206-
name: 'Delete Daily account brief?',
207-
exact: true,
208-
})
205+
const confirmation = page.getByRole('dialog', { name: 'Delete skill', exact: true })
206+
await expect(confirmation).toContainText(
207+
'This removes Daily account brief from your integrations.'
208+
)
209209
await confirmation.getByRole('button', { name: 'Cancel', exact: true }).click()
210210
await expect(savedEditor).toBeVisible()
211211
await savedEditor.getByRole('button', { name: 'Delete skill', exact: true }).click()
212-
await confirmation.getByRole('button', { name: 'Delete skill', exact: true }).click()
212+
await confirmation.getByRole('button', { name: 'Delete', exact: true }).click()
213213
await expect(added).toHaveCount(0)
214214
await expect(main.getByRole('link', { name: /^Weekly customer review / })).toBeVisible()
215215
})

‎apps/sim/platform/checks/integrations.spec.ts‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test('app discovery preserves editable installed skills and sends templates to t
7272
'Confirm the target vault, retrieve the secret, and report only its item reference.'
7373
await editor.getByRole('textbox', { name: 'Name', exact: true }).fill('runtime-vault-lookup')
7474
await editor.getByRole('textbox', { name: 'Instructions', exact: true }).fill(editedInstructions)
75-
await editor.getByRole('button', { name: 'Save changes', exact: true }).click()
75+
await editor.getByRole('button', { name: 'Save', exact: true }).click()
7676
await main
7777
.getByRole('navigation', { name: 'Skills navigation', exact: true })
7878
.getByRole('link')
@@ -131,7 +131,7 @@ test('adding another credential preserves existing accounts and its details surv
131131
await list
132132
.getByRole('textbox', { name: 'Display name', exact: true })
133133
.fill('Gmail account review')
134-
await list.getByRole('button', { name: 'Save changes', exact: true }).click()
134+
await list.getByRole('button', { name: 'Save', exact: true }).click()
135135
await list
136136
.getByRole('navigation', { name: 'Gmail navigation', exact: true })
137137
.getByRole('link')
@@ -300,16 +300,15 @@ test('shared family credential edits and access changes propagate without removi
300300
await page.getByRole('menuitemradio', { name: 'Admin', exact: true }).click()
301301
await people.getByRole('button', { name: 'Manage access for Nina Patel', exact: true }).click()
302302
await page.getByRole('menuitem', { name: 'Remove', exact: true }).click()
303-
await page
304-
.getByRole('dialog', { name: 'Remove Nina Patel?', exact: true })
305-
.getByRole('button', { name: 'Remove', exact: true })
306-
.click()
303+
const removal = page.getByRole('dialog', { name: 'Remove member', exact: true })
304+
await expect(removal).toContainText('Nina Patel will lose access to this credential.')
305+
await removal.getByRole('button', { name: 'Remove', exact: true }).click()
307306
await expect(people.getByText('Nina Patel', { exact: true })).toHaveCount(0)
308307
await main.getByRole('tab', { name: 'Details', exact: true }).click()
309308
await main
310309
.getByRole('textbox', { name: 'Display name', exact: true })
311310
.fill('Shared Google operations')
312-
await main.getByRole('button', { name: 'Save changes', exact: true }).click()
311+
await main.getByRole('button', { name: 'Save', exact: true }).click()
313312
await main
314313
.getByRole('navigation', { name: 'Gmail navigation', exact: true })
315314
.getByRole('link')
@@ -690,7 +689,10 @@ test('managed, unconfigured and retained connections expose only the actions the
690689
await expect(page.getByRole('button', { name: 'Reconnect', exact: true })).toBeVisible()
691690
await page.keyboard.press('Escape')
692691
await expect(main.getByRole('radio')).toHaveCount(0)
693-
await main.getByRole('link', { name: 'Back to Fireflies', exact: true }).click()
692+
await main
693+
.getByRole('navigation', { name: 'Fireflies navigation', exact: true })
694+
.getByRole('link', { name: 'Fireflies', exact: true })
695+
.click()
694696
await main.getByRole('link', { name: 'Integrations', exact: true }).click()
695697
for (const provider of ['GitLab', 'Slack', 'Granola', 'Zoom']) {
696698
await main.getByRole('link', { name: new RegExp(`^${provider} `) }).click()

‎apps/sim/platform/checks/live/home.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ test.describe('Home with connected accounts', () => {
377377
const email = page.getByRole('region', { name: 'Email', exact: true })
378378
await email.getByRole('button', { name: 'Email options' }).click()
379379
await page.getByRole('menuitem', { name: 'Disconnect Email' }).click()
380-
const dialog = page.getByRole('dialog', { name: 'Disconnect Email?' })
380+
const dialog = page.getByRole('dialog', { name: 'Disconnect Email', exact: true })
381381
await dialog.getByRole('button', { name: 'Disconnect', exact: true }).click()
382382
await expect(dialog).toBeHidden()
383383
await expect(email.getByText('Connect your email', { exact: true })).toBeVisible()

‎apps/sim/platform/checks/live/integrations.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ test('a workspace credential renames from its page, and the name survives a relo
9595
new URL(response.url()).pathname === `/api/credentials/${credential.id}`
9696
)
9797
await name.fill(renamed)
98-
await details.getByRole('button', { name: 'Save changes', exact: true }).click()
98+
await details.getByRole('button', { name: 'Save', exact: true }).click()
9999
const response = await saved
100100
expect(response.ok()).toBe(true)
101101
expect(new URL(response.url()).searchParams.get('workspaceId')).toBe(WORKSPACE_ID)

‎apps/sim/platform/checks/manual-credentials.spec.ts‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ test('manual secrets link to apps, start private and clear values across type ch
4747
await page.getByRole('option', { name: 'Service account JSON', exact: true }).click()
4848
await expect(modal.getByLabel('JSON key', { exact: true })).toHaveValue('')
4949
await modal.getByLabel('JSON key', { exact: true }).fill('[]')
50-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
50+
await modal.getByRole('button', { name: 'Create credential', exact: true }).click()
5151
await expect(modal.getByRole('alert')).toContainText('non-empty object')
5252
await modal.getByRole('combobox', { name: 'Type', exact: true }).click()
5353
await page.getByRole('option', { name: 'Refresh token', exact: true }).click()
5454
await expect(modal.getByLabel('Value', { exact: true })).toHaveValue('')
5555
await modal.getByLabel('Value', { exact: true }).fill('manual-refresh-token-never-retained')
56-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
56+
await modal.getByRole('button', { name: 'Create credential', exact: true }).click()
5757
await main.getByRole('button', { name: /^Operations vault / }).click()
5858
const id = await main.getByLabel('Credential ID', { exact: true }).inputValue()
5959
await main.getByRole('tab', { name: 'Access', exact: true }).click()
@@ -67,7 +67,10 @@ test('manual secrets link to apps, start private and clear values across type ch
6767
await page.keyboard.press('Escape')
6868
await main.getByRole('button', { name: 'Add people', exact: true }).click()
6969
await expect(table.getByRole('row', { name: /Nina Patel/ })).toBeVisible()
70-
await main.getByRole('link', { name: 'Back to 1Password', exact: true }).click()
70+
await main
71+
.getByRole('navigation', { name: '1Password navigation', exact: true })
72+
.getByRole('link', { name: '1Password', exact: true })
73+
.click()
7174
await expect(main.getByRole('button', { name: /^Operations vault / })).toBeVisible()
7275
await expect(main.getByText(/^Used by /)).toHaveCount(0)
7376
await main.getByRole('link', { name: 'Integrations', exact: true }).click()

‎apps/sim/scripts/org-redesign-e2e/checks/integrations.ts‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ export async function integrationChecks() {
167167
async () => {
168168
await withSession(CONNECTED, async ({ page }) => {
169169
await page.goto(url(org.integrations))
170+
// evaluateAll does not wait, so read the order only once the directory has painted.
171+
await expect(
172+
page.getByRole('main').getByRole('region', { name: 'Available', exact: true })
173+
).toBeVisible()
170174
const groups = await page
171175
.getByRole('main')
172176
.getByRole('region')
@@ -190,7 +194,7 @@ export async function integrationChecks() {
190194
)
191195
await expect(page.getByRole('button', { name: 'Reconnect', exact: true })).toBeVisible()
192196
await page.getByRole('button', { name: 'Disconnect', exact: true }).click()
193-
const modal = dialog(page, `Disconnect ${CONNECTED.email}?`)
197+
const modal = dialog(page, `Disconnect ${CONNECTED.email}`)
194198
await expect(
195199
modal.getByText('People and workflows using this credential will lose access.')
196200
).toBeVisible()
@@ -243,7 +247,7 @@ export async function integrationChecks() {
243247
await expect(page.getByRole('heading', { level: 1, name: second })).toBeVisible()
244248
await expect(page.getByRole('button', { name: 'Reconnect', exact: true })).toBeVisible()
245249
await page.getByRole('button', { name: 'Disconnect', exact: true }).click()
246-
const modal = dialog(page, `Disconnect ${second}?`)
250+
const modal = dialog(page, `Disconnect ${second}`)
247251
await expect(modal).toContainText(second)
248252
await expect(modal).not.toContainText(CONNECTED.email)
249253
await modal.getByRole('button', { name: 'Cancel', exact: true }).click()

‎apps/sim/scripts/org-redesign-e2e/checks/links.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,13 @@ export async function linksChecks() {
245245
await modal.getByRole('textbox', { name: 'Name' }).fill('Hand Book')
246246
await expect(modal.getByRole('textbox', { name: 'Name' })).not.toHaveValue('Hand Book')
247247
await modal.getByRole('textbox', { name: 'Name' }).fill(NAMED_LINKS.handbook.name)
248-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
248+
await modal.getByRole('button', { name: 'Create link', exact: true }).click()
249249
await expect(modal.getByText(/already exists/)).toBeVisible()
250250
await modal.getByRole('textbox', { name: 'Name' }).fill('parts-lookup')
251251
await expect(
252252
modal.getByRole('checkbox', { name: 'Hide from the links page' })
253253
).toBeEnabled()
254-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
254+
await modal.getByRole('button', { name: 'Create link', exact: true }).click()
255255
await expect(modal).toHaveCount(0)
256256
await expect(page).toHaveURL((address) => !address.searchParams.has('create'))
257257
await search(page).fill('parts-lookup')
@@ -285,7 +285,7 @@ export async function linksChecks() {
285285
withSession(MEMBER, async ({ page }) => {
286286
await page.goto(`${linksUrl}?create=held-link`)
287287
const modal = dialog(page, 'New link')
288-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
288+
await modal.getByRole('button', { name: 'Create link', exact: true }).click()
289289
await expect(modal.getByRole('textbox', { name: 'Destination URL' })).toHaveAttribute(
290290
'aria-invalid',
291291
'true'
@@ -300,7 +300,7 @@ export async function linksChecks() {
300300
await release.promise
301301
await route.continue()
302302
})
303-
await modal.getByRole('button', { name: 'Create', exact: true }).click()
303+
await modal.getByRole('button', { name: 'Create link', exact: true }).click()
304304
await saving.promise
305305
await page.keyboard.press('Escape')
306306
await pageTurn(page)

‎apps/sim/scripts/org-redesign-e2e/checks/settings.ts‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ export async function settingsChecks() {
609609
})
610610
})
611611
await check(
612-
'Single sign-on: inline errors stop a bad Save, and a good one posts',
612+
'Single sign-on: inline errors stop adding a bad provider, and a good one posts',
613613
async () => {
614614
await withSession(ADMIN, async ({ page }) => {
615615
const bodies: unknown[] = []
@@ -620,7 +620,7 @@ export async function settingsChecks() {
620620
await page.goto(settingsUrl('sso'))
621621
const issuer = page.getByRole('textbox', { name: 'Issuer URL' })
622622
await issuer.fill('not a url')
623-
await page.getByRole('button', { name: 'Save', exact: true }).click()
623+
await page.getByRole('button', { name: 'Add provider', exact: true }).click()
624624
await expect(
625625
page.getByText(/Enter a valid issuer URL|Issuer URL must/).first()
626626
).toBeVisible()
@@ -641,7 +641,7 @@ export async function settingsChecks() {
641641
const secret = page.getByRole('textbox', { name: 'Client secret' })
642642
await secret.focus()
643643
await secret.fill('e2e-secret')
644-
await page.getByRole('button', { name: 'Save', exact: true }).click()
644+
await page.getByRole('button', { name: 'Add provider', exact: true }).click()
645645
await expect.poll(() => bodies.length).toBe(1)
646646
assert.equal(toRecord(bodies[0]).providerId, 'e2e-oidc')
647647
assert.match(JSON.stringify(bodies[0]), /e2e-secret/)
@@ -650,7 +650,7 @@ export async function settingsChecks() {
650650
{ allow: [/500 POST .*sso\/register/] }
651651
)
652652
await check(
653-
'Single sign-on: a pending Save holds the form and the page, and a failed one keeps the draft',
653+
'Single sign-on: a pending add holds the form and the page, and a failed one keeps the draft',
654654
async () => {
655655
await withSession(ADMIN, async ({ page }) => {
656656
const bodies: unknown[] = []
@@ -676,9 +676,9 @@ export async function settingsChecks() {
676676
const secret = page.getByRole('textbox', { name: 'Client secret' })
677677
await secret.focus()
678678
await secret.fill('e2e-secret')
679-
await page.getByRole('button', { name: 'Save', exact: true }).click()
679+
await page.getByRole('button', { name: 'Add provider', exact: true }).click()
680680
await expect.poll(() => bodies.length).toBe(1)
681-
await expect(page.getByRole('button', { name: 'Saving…', exact: true })).toBeDisabled()
681+
await expect(page.getByRole('button', { name: 'Adding…', exact: true })).toBeDisabled()
682682
await expect(issuer).toBeDisabled()
683683

684684
// Submitting again, or leaving for another section, does nothing while the first is out.
@@ -688,19 +688,19 @@ export async function settingsChecks() {
688688
.getByRole('link', { name: 'General', exact: true })
689689
await general.click()
690690
await pageTurn(page)
691-
assert.equal(bodies.length, 1, 'A second Save went out while the first was pending')
691+
assert.equal(bodies.length, 1, 'A second add went out while the first was pending')
692692
await expect(page).toHaveURL(settingsUrl('sso'))
693693
await expect(dialog(page, 'Unsaved changes')).toHaveCount(0)
694694

695695
answerFirst.resolve()
696-
await expect(page.getByRole('button', { name: 'Save', exact: true })).toBeEnabled()
696+
await expect(page.getByRole('button', { name: 'Add provider', exact: true })).toBeEnabled()
697697
await expect(clientId).toHaveValue('e2e-client')
698698
// The failed draft is still a draft: leaving now asks first.
699699
await general.click()
700700
const unsaved = dialog(page, 'Unsaved changes')
701701
await unsaved.getByRole('button', { name: 'Cancel', exact: true }).click()
702702
await expect(unsaved).toHaveCount(0)
703-
await page.getByRole('button', { name: 'Save', exact: true }).click()
703+
await page.getByRole('button', { name: 'Add provider', exact: true }).click()
704704
await expect.poll(() => bodies.length).toBe(2)
705705
})
706706
},
@@ -788,7 +788,7 @@ export async function settingsChecks() {
788788
const create = page.waitForRequest(
789789
(request) => request.method() === 'POST' && pathOf(request.url()).endsWith('/data-drains')
790790
)
791-
await page.getByRole('button', { name: 'Create', exact: true }).click()
791+
await page.getByRole('button', { name: 'Create drain', exact: true }).click()
792792
await create
793793
})
794794
},

0 commit comments

Comments
 (0)