Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .woodpecker.star
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ docker_repo_slug = "opencloudeu/web"

ALPINE_GIT = "alpine/git:latest"
APACHE_TIKA = "apache/tika:2.8.0.0"
COLLABORA_CODE = "collabora/code:24.04.13.2.1"
COLLABORA_CODE = "collabora/code:25.04.3.2.1"
KEYCLOAK = "quay.io/keycloak/keycloak:25.0.0"
MINIO_MC = "minio/mc:RELEASE.2021-10-07T04-19-58Z"
OC_CI_ALPINE = "owncloudci/alpine:latest"
Expand Down Expand Up @@ -1346,7 +1346,7 @@ def collaboraService():
"detach": True,
"environment": {
"DONT_GEN_SSL_CERT": "set",
"extra_params": "--o:ssl.enable=true --o:ssl.termination=true --o:welcome.enable=false --o:net.frame_ancestors=https://opencloud:9200",
"extra_params": "--o:ssl.enable=true --o:ssl.termination=true --o:home_mode.enable=true --o:net.frame_ancestors=https://opencloud:9200",
},
"commands": [
"coolconfig generate-proof-key",
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ services:
command: ['coolconfig generate-proof-key && /start-collabora-online.sh']
environment:
DONT_GEN_SSL_CERT: YES
extra_params: --o:ssl.enable=false --o:ssl.ssl_verification=false --o:ssl.termination=true --o:welcome.enable=false --o:net.frame_ancestors=${OC_URL:-https://host.docker.internal:9200}
extra_params: --o:ssl.enable=false --o:ssl.ssl_verification=false --o:home_mode.enable=true --o:ssl.termination=true --o:net.frame_ancestors=${OC_URL:-https://host.docker.internal:9200}
username: ${COLLABORA_ADMIN_USER:-admin}
password: ${COLLABORA_ADMIN_PASSWORD:-admin}
cap_add:
Expand Down
56 changes: 13 additions & 43 deletions tests/e2e/support/objects/app-files/resource/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ const previewAudio = '//main[@id="preview"]//div[contains(@class,"stage_media")]
const previewVideo = '//main[@id="preview"]//div[contains(@class,"stage_media")]//video//source'
const previewControlsCount = '.preview-controls-action-count > :first-child'
const externalEditorIframe = '[name="app-iframe"]'
const copyPasteWarningPopup = '#copy_paste_warning-box'
const tagTableCell =
'//*[@data-test-resource-name="%s"]/ancestor::tr//td[contains(@class, "oc-table-data-cell-tags")]'
const tagInFilesTable = '//*[contains(@class, "oc-tag")]//span[text()="%s"]//ancestor::a'
Expand Down Expand Up @@ -129,7 +128,6 @@ const userAvatarInActivitypanelSelector = '[data-test-user-name="%s"]'
const collaboraDocPermissionModeSelector = '#permissionmode-container'
const collaboraEditorSaveSelector = '.notebookbar-shortcuts-bar #save'
const collaboraDocTextAreaSelector = '#clipboard-area'
const collaboraWelcomeModalIframe = '.iframe-welcome-modal'
const collaboraCanvasEditorSelector = '.leaflet-layer'
// OnlyOffice
const onlyOfficeInnerFrameSelector = '[name="frameEditor"]'
Expand Down Expand Up @@ -420,14 +418,6 @@ const createDocumentFile = async (
const editorMainFrame = page.frameLocator(externalEditorIframe)
switch (editorToOpen) {
case 'Collabora':
try {
await editorMainFrame
.locator(collaboraWelcomeModalIframe)
.waitFor({ timeout: config.minTimeout * 1000 })
await page.keyboard.press('Escape')
} catch {
console.log('No welcome modal found. Continue...')
}
await editorMainFrame.locator(collaboraDocTextAreaSelector).fill(content)
const saveLocator = editorMainFrame.locator(collaboraEditorSaveSelector)
await expect(saveLocator).toHaveAttribute('class', /.*savemodified.*/)
Expand Down Expand Up @@ -492,14 +482,6 @@ export const openAndGetContentOfDocument = async ({
const editorMainFrame = page.frameLocator(externalEditorIframe)
switch (editorToOpen) {
case 'Collabora':
try {
await editorMainFrame
.locator(collaboraWelcomeModalIframe)
.waitFor({ timeout: config.minTimeout * 1000 })
await page.keyboard.press('Escape')
} catch {
console.log('No welcome modal found. Continue...')
}
await editorMainFrame.locator(collaboraCanvasEditorSelector).click()
break
case 'OnlyOffice':
Expand All @@ -512,24 +494,21 @@ export const openAndGetContentOfDocument = async ({
"Editor should be either 'Collabora' or 'OnlyOffice' but found " + editorToOpen
)
}
// copying and getting the value with keyboard requires some
await page.keyboard.press('ControlOrMeta+A', { delay: 200 })
await page.keyboard.press('ControlOrMeta+C', { delay: 200 })
try {
await editorMainFrame
.locator(copyPasteWarningPopup)
.waitFor({ timeout: config.minTimeout * 1000 })
// close popup
await page.keyboard.press('Escape')
// deselect text. otherwise the clipboard will be empty
return await tryCopyClipboard(page)
}

const tryCopyClipboard = async (page: Page, maxRetries = 5): Promise<string> => {
for (let i = 0; i < maxRetries; i++) {
await page.evaluate(() => navigator.clipboard.writeText(''))
await page.waitForTimeout(200)
await page.keyboard.press('ControlOrMeta+A', { delay: 100 })
await page.keyboard.press('ControlOrMeta+C', { delay: 100 })
const text = await page.evaluate(() => navigator.clipboard.readText())
if (text.trim().length > 0) return text
await page.waitForTimeout(200)
await page.keyboard.press('Escape')
// select text again and copy text
await page.keyboard.press('ControlOrMeta+A', { delay: 200 })
await page.keyboard.press('ControlOrMeta+C', { delay: 200 })
} catch {
console.log('No copy-paste warning popup found. Continue...')
}
return await page.evaluate(() => navigator.clipboard.readText())
throw new Error('Failed to read non-empty clipboard content after retries')
}

const isAppProviderServiceForOfficeSuitesReadyInWebUI = async (page: Page, type: string) => {
Expand Down Expand Up @@ -2060,15 +2039,6 @@ export const canEditContent = async ({
const editorMainFrame = page.frameLocator(externalEditorIframe)
switch (type) {
case 'OpenDocument':
// By Default when "OpenDocument" is created, it is opened with "Collabora" if both app-provider services are running together
try {
await editorMainFrame
.locator(collaboraWelcomeModalIframe)
.waitFor({ timeout: config.minTimeout * 1000 })
await page.keyboard.press('Escape')
} catch {
console.log('No welcome modal found. Continue...')
}
const collaboraDocPermissionModeLocator = editorMainFrame.locator(
collaboraDocPermissionModeSelector
)
Expand Down