diff options
Diffstat (limited to 'cypress/support/utils/assertions.ts')
-rw-r--r-- | cypress/support/utils/assertions.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/cypress/support/utils/assertions.ts b/cypress/support/utils/assertions.ts new file mode 100644 index 00000000000..08b93b32e86 --- /dev/null +++ b/cypress/support/utils/assertions.ts @@ -0,0 +1,40 @@ +/*! + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { ZipReader } from '@zip.js/zip.js' +/** + * Assert that a file contains a list of expected files + * @param expectedFiles List of expected filenames + * @example + * ```js + * cy.readFile('file', null, { ... }) + * .should(zipFileContains(['file.txt'])) + * ``` + */ +export function zipFileContains(expectedFiles: string[]) { + return async (buffer: Buffer) => { + const blob = new Blob([buffer]) + const zip = new ZipReader(blob.stream()) + // check the real file names + const entries = (await zip.getEntries()).map((e) => e.filename).sort() + console.info('Zip contains entries:', entries) + expect(entries).to.deep.equal(expectedFiles.sort()) + } +} + +/** + * Check validity of an input element + * @param validity The expected validity message (empty string means it is valid) + * @example + * ```js + * cy.findByRole('textbox') + * .should(haveValidity(/must not be empty/i)) + * ``` + */ +export const haveValidity = (validity: string | RegExp) => { + if (typeof validity === 'string') { + return (el: JQuery<HTMLElement>) => expect((el.get(0) as HTMLInputElement).validationMessage).to.equal(validity) + } + return (el: JQuery<HTMLElement>) => expect((el.get(0) as HTMLInputElement).validationMessage).to.match(validity) +} |