20e8c92410
KaTeX math will now render progressivly and asynchronously. There are upper limits on the character count of each formula, and on cumulative render time.
42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe 'Math rendering', :js do
|
|
let!(:project) { create(:project, :public) }
|
|
|
|
it 'renders inline and display math correctly' do
|
|
description = <<~MATH
|
|
This math is inline $`a^2+b^2=c^2`$.
|
|
|
|
This is on a separate line
|
|
```math
|
|
a^2+b^2=c^2
|
|
```
|
|
MATH
|
|
|
|
issue = create(:issue, project: project, description: description)
|
|
|
|
visit project_issue_path(project, issue)
|
|
|
|
expect(page).to have_selector('.katex .mord.mathdefault', text: 'b')
|
|
expect(page).to have_selector('.katex-display .mord.mathdefault', text: 'b')
|
|
end
|
|
|
|
it 'only renders non XSS links' do
|
|
description = <<~MATH
|
|
This link is valid $`\\href{javascript:alert('xss');}{xss}`$.
|
|
|
|
This link is valid $`\\href{https://gitlab.com}{Gitlab}`$.
|
|
MATH
|
|
|
|
issue = create(:issue, project: project, description: description)
|
|
|
|
visit project_issue_path(project, issue)
|
|
|
|
page.within '.description > .md' do
|
|
expect(page).to have_selector('.katex-error')
|
|
expect(page).to have_selector('.katex-html a', text: 'Gitlab')
|
|
end
|
|
end
|
|
end
|