| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { test, expect } from "../fixtures"
- import {
- openSidebar,
- openSessionMoreMenu,
- clickMenuItem,
- confirmDialog,
- openSharePopover,
- withSession,
- } from "../actions"
- import { sessionItemSelector, inlineInputSelector } from "../selectors"
- const shareDisabled = process.env.OPENCODE_DISABLE_SHARE === "true" || process.env.OPENCODE_DISABLE_SHARE === "1"
- test("sidebar session can be renamed", async ({ page, sdk, gotoSession }) => {
- const stamp = Date.now()
- const originalTitle = `e2e rename test ${stamp}`
- const newTitle = `e2e renamed ${stamp}`
- await withSession(sdk, originalTitle, async (session) => {
- await gotoSession(session.id)
- await openSidebar(page)
- const menu = await openSessionMoreMenu(page, session.id)
- await clickMenuItem(menu, /rename/i)
- const input = page.locator(sessionItemSelector(session.id)).locator(inlineInputSelector).first()
- await expect(input).toBeVisible()
- await input.fill(newTitle)
- await input.press("Enter")
- await expect(page.locator(sessionItemSelector(session.id)).locator("a").first()).toContainText(newTitle)
- })
- })
- test("sidebar session can be archived", async ({ page, sdk, gotoSession }) => {
- const stamp = Date.now()
- const title = `e2e archive test ${stamp}`
- await withSession(sdk, title, async (session) => {
- await gotoSession(session.id)
- await openSidebar(page)
- const sessionEl = page.locator(sessionItemSelector(session.id))
- const menu = await openSessionMoreMenu(page, session.id)
- await clickMenuItem(menu, /archive/i)
- await expect(sessionEl).not.toBeVisible()
- })
- })
- test("sidebar session can be deleted", async ({ page, sdk, gotoSession }) => {
- const stamp = Date.now()
- const title = `e2e delete test ${stamp}`
- await withSession(sdk, title, async (session) => {
- await gotoSession(session.id)
- await openSidebar(page)
- const sessionEl = page.locator(sessionItemSelector(session.id))
- const menu = await openSessionMoreMenu(page, session.id)
- await clickMenuItem(menu, /delete/i)
- await confirmDialog(page, /delete/i)
- await expect(sessionEl).not.toBeVisible()
- })
- })
- test("session can be shared and unshared via header button", async ({ page, sdk, gotoSession }) => {
- test.skip(shareDisabled, "Share is disabled in this environment (OPENCODE_DISABLE_SHARE).")
- const stamp = Date.now()
- const title = `e2e share test ${stamp}`
- await withSession(sdk, title, async (session) => {
- await gotoSession(session.id)
- const { rightSection, popoverBody } = await openSharePopover(page)
- await popoverBody.getByRole("button", { name: "Publish" }).first().click()
- await expect
- .poll(
- async () => {
- const data = await sdk.session.get({ sessionID: session.id }).then((r) => r.data)
- return data?.share?.url || undefined
- },
- { timeout: 30_000 },
- )
- .not.toBeUndefined()
- const copyButton = rightSection.locator('button[aria-label="Copy link"]').first()
- await expect(copyButton).toBeVisible({ timeout: 30_000 })
- const sharedPopover = await openSharePopover(page)
- const unpublish = sharedPopover.popoverBody.getByRole("button", { name: "Unpublish" }).first()
- await expect(unpublish).toBeVisible({ timeout: 30_000 })
- await unpublish.click()
- await expect
- .poll(
- async () => {
- const data = await sdk.session.get({ sessionID: session.id }).then((r) => r.data)
- return data?.share?.url || undefined
- },
- { timeout: 30_000 },
- )
- .toBeUndefined()
- await expect(copyButton).not.toBeVisible({ timeout: 30_000 })
- const unsharedPopover = await openSharePopover(page)
- await expect(unsharedPopover.popoverBody.getByRole("button", { name: "Publish" }).first()).toBeVisible({
- timeout: 30_000,
- })
- })
- })
|