diff --git a/src/core/components/providers/markdown.jsx b/src/core/components/providers/markdown.jsx index 65b94d9d..ee2ddec2 100644 --- a/src/core/components/providers/markdown.jsx +++ b/src/core/components/providers/markdown.jsx @@ -35,6 +35,8 @@ function Markdown({ source, className = "" }) { linkTarget: "_blank" }) + md.core.ruler.disable(["replacements", "smartquotes"]) + const html = md.render(source) const sanitized = sanitizer(html) diff --git a/test/e2e-cypress/static/documents/bugs/5060.yaml b/test/e2e-cypress/static/documents/bugs/5060.yaml new file mode 100644 index 00000000..5c3c32ab --- /dev/null +++ b/test/e2e-cypress/static/documents/bugs/5060.yaml @@ -0,0 +1,10 @@ +--- +swagger: '2.0' +info: + title: Foobar Service + description: '

Example of a simple GET request via curl with bearer HTTP Authentication:

curl
+    -X GET "https://foobar.com/stuff" -H "Accept: application/json" -H "Authorization:
+    Bearer abc123.xyz.789"
' + version: '2.0' +paths: {} + diff --git a/test/e2e-cypress/tests/bugs/5060.js b/test/e2e-cypress/tests/bugs/5060.js new file mode 100644 index 00000000..68ce6bc3 --- /dev/null +++ b/test/e2e-cypress/tests/bugs/5060.js @@ -0,0 +1,15 @@ +describe("#5060: unwanted smart quotes in rendered Markdown", () => { + it("should not convert regular quotes to smart quotes", () => { + cy + .visit("/?url=/documents/bugs/5060.yaml") + .get("div.description") + .should($el => { + const text = $el.get(0).textContent + expect(text).to.include(`Example of a simple GET request via curl with bearer HTTP Authentication`) + expect(text).to.include(`curl -X GET "https://foobar.com/stuff"`) + expect(text).to.include(`-H "Accept: application/json"`) + expect(text).to.include(`-H "Authorization: Bearer abc123.xyz.789"`) + expect(text.indexOf(`“`)).to.equal(-1) + }) + }) +})