mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #15411 from overleaf/mj-cypress-mathjax
[web] Stub mathjax in cypress tests GitOrigin-RevId: 7b734a7d80cbc0a96c9cc05ee8c31a4daaab5e25
This commit is contained in:
parent
1518b94451
commit
1e810a987f
6 changed files with 44 additions and 33 deletions
|
@ -3,7 +3,22 @@ window.MathJax = {
|
||||||
startup: {
|
startup: {
|
||||||
promise: Promise.resolve()
|
promise: Promise.resolve()
|
||||||
},
|
},
|
||||||
svgStylesheet: () => document.createElement("STYLE")
|
svgStylesheet: () => document.createElement("STYLE"),
|
||||||
|
typesetPromise: (elements) => {
|
||||||
|
for (const element of elements) {
|
||||||
|
// This will keep math delimeters around the text
|
||||||
|
element.classList.add('MathJax')
|
||||||
|
}
|
||||||
|
return Promise.resolve()
|
||||||
|
},
|
||||||
|
tex2svgPromise: (content) => {
|
||||||
|
const text = document.createElement('SPAN')
|
||||||
|
text.classList.add('MathJax')
|
||||||
|
text.innerText = content
|
||||||
|
return Promise.resolve(text)
|
||||||
|
},
|
||||||
|
getMetricsFor: () => ({}),
|
||||||
|
texReset: () => {},
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -11,13 +26,12 @@ export const interceptMathJax = () => {
|
||||||
cy.window().then(win => {
|
cy.window().then(win => {
|
||||||
win.metaAttributesCache.set(
|
win.metaAttributesCache.set(
|
||||||
'ol-mathJax3Path',
|
'ol-mathJax3Path',
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js'
|
'/js/libs/mathjax3/es5/tex-svg-full.js'
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
cy.intercept('GET', '/js/libs/mathjax3/es5/tex-svg-full.js*', MATHJAX_STUB)
|
|
||||||
cy.intercept(
|
cy.intercept(
|
||||||
'GET',
|
'GET',
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js',
|
'/js/libs/mathjax3/es5/tex-svg-full.js*',
|
||||||
MATHJAX_STUB
|
MATHJAX_STUB
|
||||||
)
|
).as('mathjax-load-request')
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,6 +155,14 @@ cell 3 & cell 4 \\\\
|
||||||
|
|
||||||
checkBordersWithNoMultiColumn([false, true, false], [false, true, false])
|
checkBordersWithNoMultiColumn([false, true, false], [false, true, false])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Renders math in cells', function () {
|
||||||
|
mountEditor(`
|
||||||
|
\\begin{tabular}{c}
|
||||||
|
$\\pi$
|
||||||
|
\\end{tabular}`)
|
||||||
|
cy.get('.MathJax').should('have.text', '$\\pi$')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('The toolbar', function () {
|
describe('The toolbar', function () {
|
||||||
|
|
|
@ -27,10 +27,7 @@ const mountEditor = (content: string, ...args: any[]) => {
|
||||||
describe('<CodeMirrorEditor/> in Visual mode with read-only permission', function () {
|
describe('<CodeMirrorEditor/> in Visual mode with read-only permission', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
||||||
window.metaAttributesCache.set(
|
cy.interceptMathJax()
|
||||||
'ol-mathJax3Path',
|
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js'
|
|
||||||
)
|
|
||||||
cy.interceptEvents()
|
cy.interceptEvents()
|
||||||
cy.interceptSpelling()
|
cy.interceptSpelling()
|
||||||
})
|
})
|
||||||
|
|
|
@ -10,10 +10,7 @@ const Container: FC = ({ children }) => (
|
||||||
describe('<CodeMirrorEditor/> tooltips in Visual mode', function () {
|
describe('<CodeMirrorEditor/> tooltips in Visual mode', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
||||||
window.metaAttributesCache.set(
|
cy.interceptMathJax()
|
||||||
'ol-mathJax3Path',
|
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js'
|
|
||||||
)
|
|
||||||
cy.interceptEvents()
|
cy.interceptEvents()
|
||||||
cy.interceptSpelling()
|
cy.interceptSpelling()
|
||||||
|
|
||||||
|
|
|
@ -13,12 +13,9 @@ const Container: FC = ({ children }) => (
|
||||||
describe('<CodeMirrorEditor/> in Visual mode', function () {
|
describe('<CodeMirrorEditor/> in Visual mode', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
||||||
window.metaAttributesCache.set(
|
|
||||||
'ol-mathJax3Path',
|
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js'
|
|
||||||
)
|
|
||||||
cy.interceptEvents()
|
cy.interceptEvents()
|
||||||
cy.interceptSpelling()
|
cy.interceptSpelling()
|
||||||
|
cy.interceptMathJax()
|
||||||
|
|
||||||
// 3 blank lines
|
// 3 blank lines
|
||||||
const content = '\n'.repeat(3)
|
const content = '\n'.repeat(3)
|
||||||
|
@ -386,17 +383,14 @@ describe('<CodeMirrorEditor/> in Visual mode', function () {
|
||||||
cy.get('@first-line').type(
|
cy.get('@first-line').type(
|
||||||
'\\begin{{}frame}{{}Slide\\\\title}{Enter}\\end{{}frame}{Enter}'
|
'\\begin{{}frame}{{}Slide\\\\title}{Enter}\\end{{}frame}{Enter}'
|
||||||
)
|
)
|
||||||
cy.get('.ol-cm-frame-title').should('have.html', 'Slide<br>title')
|
cy.get('.ol-cm-frame-title').should('contain.html', 'Slide<br>title')
|
||||||
})
|
})
|
||||||
|
|
||||||
// eslint-disable-next-line mocha/no-skipped-tests
|
it('typesets math in title', function () {
|
||||||
it.skip('typesets math in title', function () {
|
|
||||||
cy.get('@first-line').type(
|
cy.get('@first-line').type(
|
||||||
'\\begin{{}frame}{{}Slide $\\pi$}{Enter}\\end{{}frame}{Enter}'
|
'\\begin{{}frame}{{}Slide $\\pi$}{Enter}\\end{{}frame}{Enter}'
|
||||||
)
|
)
|
||||||
|
cy.get('.MathJax').should('contain.text', '$\\pi$')
|
||||||
// allow plenty of time for MathJax to load
|
|
||||||
cy.get('.MathJax', { timeout: 10000 })
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('typesets subtitle', function () {
|
it('typesets subtitle', function () {
|
||||||
|
@ -419,11 +413,7 @@ describe('<CodeMirrorEditor/> in Visual mode', function () {
|
||||||
].join('{Enter}')
|
].join('{Enter}')
|
||||||
)
|
)
|
||||||
|
|
||||||
// allow plenty of time for MathJax to load
|
cy.get('.ol-cm-maketitle').should('have.class', 'MathJax')
|
||||||
// TODO: re-enable this assertion when stable
|
|
||||||
// cy.get('.MathJax', { timeout: 10000 })
|
|
||||||
|
|
||||||
cy.get('.ol-cm-maketitle')
|
|
||||||
cy.get('.ol-cm-title').should('contain.html', 'Document title<br>with')
|
cy.get('.ol-cm-title').should('contain.html', 'Document title<br>with')
|
||||||
cy.get('.ol-cm-author').should('have.text', 'Author')
|
cy.get('.ol-cm-author').should('have.text', 'Author')
|
||||||
|
|
||||||
|
@ -700,7 +690,15 @@ describe('<CodeMirrorEditor/> in Visual mode', function () {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
it('invokes MathJax when math is written', function () {
|
||||||
|
cy.get('@first-line').type('foo $\\pi$ bar')
|
||||||
|
cy.get('@second-line').type(
|
||||||
|
'foo \n\\[\\epsilon{rightArrow}{rightArrow}\nbar'
|
||||||
|
)
|
||||||
|
cy.get('.MathJax').first().should('have.text', '\\pi')
|
||||||
|
cy.get('.MathJax').eq(1).should('have.text', '\\epsilon')
|
||||||
|
})
|
||||||
|
|
||||||
// TODO: \input
|
// TODO: \input
|
||||||
// TODO: Math
|
|
||||||
// TODO: Abstract
|
// TODO: Abstract
|
||||||
})
|
})
|
||||||
|
|
|
@ -41,10 +41,7 @@ describe('<FigureModal />', function () {
|
||||||
// TODO: Write tests for width toggle, when we can match on source code
|
// TODO: Write tests for width toggle, when we can match on source code
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
|
||||||
window.metaAttributesCache.set(
|
cy.interceptMathJax()
|
||||||
'ol-mathJax3Path',
|
|
||||||
'https://unpkg.com/mathjax@3.2.2/es5/tex-svg-full.js'
|
|
||||||
)
|
|
||||||
cy.interceptEvents()
|
cy.interceptEvents()
|
||||||
cy.interceptSpelling()
|
cy.interceptSpelling()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue