mirror of
https://github.com/langgenius/dify.git
synced 2026-07-21 18:58:35 +08:00
73 lines
3.3 KiB
TypeScript
73 lines
3.3 KiB
TypeScript
import type { DifyWorld } from '../../support/world'
|
|
import { Then, When } from '@cucumber/cucumber'
|
|
import { expect } from '@playwright/test'
|
|
import { getAgentReferencingWorkflows } from '../../agent-v2/support/agent'
|
|
import { agentBuilderPreseededResources } from '../../agent-v2/support/agent-builder-resources'
|
|
import { getAccessRegion, getPreseededResource } from './access-point-helpers'
|
|
|
|
Then(
|
|
'I should see the Agent v2 Workflow access reference for {string}',
|
|
async function (this: DifyWorld, workflowName: string) {
|
|
const workflow = getPreseededResource(this, workflowName, 'workflow')
|
|
const agent = getPreseededResource(
|
|
this,
|
|
agentBuilderPreseededResources.workflowReferenceAgent,
|
|
'agent',
|
|
)
|
|
const references = await getAgentReferencingWorkflows(agent.id)
|
|
const reference = references.find(
|
|
(item) => item.app_id === workflow.id || item.app_name === workflow.name,
|
|
)
|
|
if (!reference)
|
|
throw new Error(`Agent "${agent.name}" does not reference workflow "${workflow.name}".`)
|
|
|
|
const accessRegion = getAccessRegion(this)
|
|
const workflowSection = accessRegion.getByRole('region', { name: 'Workflow access' })
|
|
const row = workflowSection.getByRole('row').filter({ hasText: workflowName })
|
|
const nodeCount = reference.node_ids?.length ?? 0
|
|
|
|
await expect(accessRegion.getByRole('columnheader', { name: 'Name' })).toBeVisible()
|
|
await expect(accessRegion.getByRole('columnheader', { name: 'Version' })).toBeVisible()
|
|
await expect(accessRegion.getByRole('columnheader', { name: 'Nodes' })).toBeVisible()
|
|
await expect(accessRegion.getByRole('columnheader', { name: 'Last updated' })).toBeVisible()
|
|
await expect(accessRegion.getByRole('columnheader', { name: 'Actions' })).toBeVisible()
|
|
await expect(row).toBeVisible({ timeout: 30_000 })
|
|
await expect(row.getByText(reference.workflow_version, { exact: true })).toBeVisible()
|
|
await expect(row.getByText(new RegExp(`^${nodeCount} nodes?$`))).toBeVisible()
|
|
if (reference.app_updated_at == null)
|
|
await expect(row.getByText('N/A', { exact: true })).toBeVisible()
|
|
else await expect(row.getByText('N/A', { exact: true })).not.toBeVisible()
|
|
await expect(row.getByRole('link', { name: `Open ${workflowName} in Studio` })).toBeVisible()
|
|
},
|
|
)
|
|
|
|
When(
|
|
'I open the Agent v2 Workflow access reference for {string}',
|
|
async function (this: DifyWorld, workflowName: string) {
|
|
const workflowLink = this.getPage().getByRole('link', {
|
|
name: `Open ${workflowName} in Studio`,
|
|
})
|
|
|
|
const [workflowPage] = await Promise.all([
|
|
this.getPage().waitForEvent('popup'),
|
|
workflowLink.click(),
|
|
])
|
|
|
|
this.agentBuilder.accessPoint.workflowReferencePage = workflowPage
|
|
},
|
|
)
|
|
|
|
Then(
|
|
'the Agent v2 Workflow access reference for {string} should open in Studio',
|
|
async function (this: DifyWorld, workflowName: string) {
|
|
const workflowPage = this.agentBuilder.accessPoint.workflowReferencePage
|
|
if (!workflowPage) throw new Error('No Agent v2 Workflow access reference page was opened.')
|
|
|
|
const workflow = getPreseededResource(this, workflowName, 'workflow')
|
|
|
|
await expect(workflowPage).toHaveURL(new RegExp(`/app/${workflow.id}/workflow(?:\\?.*)?$`))
|
|
await workflowPage.close()
|
|
this.agentBuilder.accessPoint.workflowReferencePage = undefined
|
|
},
|
|
)
|