| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import { v4 as uuid } from 'uuid'
- const outputFiles = () => {
- const build = uuid()
- return [
- {
- path: 'output.pdf',
- build,
- url: `/build/${build}/output.pdf`,
- type: 'pdf',
- },
- {
- path: 'output.bbl',
- build,
- url: `/build/${build}/output.bbl`,
- type: 'bbl',
- },
- {
- path: 'output.bib',
- build,
- url: `/build/${build}/output.bib`,
- type: 'bib',
- },
- {
- path: 'example.txt',
- build,
- url: `/build/${build}/example.txt`,
- type: 'txt',
- },
- {
- path: 'output.log',
- build,
- url: `/build/${build}/output.log`,
- type: 'log',
- },
- {
- path: 'output.blg',
- build,
- url: `/build/${build}/output.blg`,
- type: 'blg',
- },
- ]
- }
- export const interceptCompile = (prefix = 'compile', times = 1) => {
- cy.intercept(
- { method: 'POST', pathname: '/project/*/compile', times },
- {
- body: {
- status: 'success',
- clsiServerId: 'foo',
- compileGroup: 'priority',
- pdfDownloadDomain: 'https://clsi.test-overleaf.com',
- outputFiles: outputFiles(),
- },
- }
- ).as(`${prefix}`)
- cy.intercept(
- { pathname: '/build/*/output.pdf', times },
- { fixture: 'build/output.pdf,null' }
- ).as(`${prefix}-pdf`)
- cy.intercept(
- { pathname: '/build/*/output.log', times },
- { fixture: 'build/output.log' }
- ).as(`${prefix}-log`)
- cy.intercept(
- { pathname: '/build/*/output.blg', times },
- { fixture: 'build/output.blg' }
- ).as(`${prefix}-blg`)
- }
- export const waitForCompile = ({ prefix = 'compile', pdf = false } = {}) => {
- cy.wait(`@${prefix}`)
- cy.wait(`@${prefix}-log`)
- cy.wait(`@${prefix}-blg`)
- if (pdf) {
- cy.wait(`@${prefix}-pdf`)
- }
- return cy.wrap(null)
- }
- export const interceptDeferredCompile = (beforeResponse?: () => void) => {
- const { promise, resolve } = Promise.withResolvers<void>()
- cy.intercept(
- { method: 'POST', url: '/project/*/compile*', times: 1 },
- req => {
- if (beforeResponse) {
- beforeResponse()
- }
- // only reply once the Promise is resolved
- promise.then(() => {
- req.reply({
- body: {
- status: 'success',
- clsiServerId: 'foo',
- compileGroup: 'priority',
- pdfDownloadDomain: 'https://clsi.test-overleaf.com',
- outputFiles: [
- {
- path: 'output.pdf',
- build: '123',
- url: '/build/123/output.pdf',
- type: 'pdf',
- },
- {
- path: 'output.log',
- build: '123',
- url: '/build/123/output.log',
- type: 'log',
- },
- {
- path: 'output.blg',
- build: '123',
- url: '/build/123/output.blg',
- type: 'log',
- },
- ],
- },
- })
- })
- return promise
- }
- ).as('compile')
- cy.intercept(
- { pathname: '/build/*/output.pdf', times: 1 },
- { fixture: 'build/output.pdf,null' }
- ).as(`compile-pdf`)
- cy.intercept(
- { pathname: '/build/*/output.log', times: 1 },
- { fixture: 'build/output.log' }
- ).as(`compile-log`)
- cy.intercept(
- { pathname: '/build/*/output.blg', times: 1 },
- { fixture: 'build/output.blg' }
- ).as(`compile-blg`)
- return cy.wrap(resolve)
- }
|