Compare commits

..

5 Commits

@ -22,6 +22,7 @@ all: $(OUTPUT_FILES)
@rsync -a node_modules/mermaid/dist/mermaid.min.js build/static/lib/ @rsync -a node_modules/mermaid/dist/mermaid.min.js build/static/lib/
@rsync -a node_modules/jquery/dist/jquery.min.js build/static/lib/ @rsync -a node_modules/jquery/dist/jquery.min.js build/static/lib/
@rsync -a node_modules/dropzone/dist/min/dropzone* build/static/lib/ @rsync -a node_modules/dropzone/dist/min/dropzone* build/static/lib/
@rsync -a node_modules/github-markdown-css/*css build/static/lib/
$(GO_OUT): $(GO_IN) $(GO_OUT): $(GO_IN)
cd src/go && go build ${LDFLAGS} -o ../../build/notes cd src/go && go build ${LDFLAGS} -o ../../build/notes
@ -63,11 +64,14 @@ docker-run:
.PHONY: install-deps .PHONY: install-deps
install-deps: install-deps:
npm install npm install
.PHONY: install-test-deps
install-test-deps:
pip install -r src/python/requirements.txt pip install -r src/python/requirements.txt
.PHONY: run .PHONY: run
run: all run: all
cd build && ./notes $(DEFAULT_ARGS) cd build && ./notes $(DEFAULT_ARGS) --data ../data
.PHONY: test .PHONY: test
test: all test: all

File diff suppressed because one or more lines are too long

14
package-lock.json generated

@ -7,6 +7,7 @@
"dependencies": { "dependencies": {
"@fontsource/roboto": "^4.2.0", "@fontsource/roboto": "^4.2.0",
"dropzone": "^5.7.6", "dropzone": "^5.7.6",
"github-markdown-css": "^4.0.0",
"jquery": "^3.5.0", "jquery": "^3.5.0",
"mathjax": "^3.1.2", "mathjax": "^3.1.2",
"mermaid": "^8.9.0", "mermaid": "^8.9.0",
@ -395,6 +396,14 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0" "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
} }
}, },
"node_modules/github-markdown-css": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/github-markdown-css/-/github-markdown-css-4.0.0.tgz",
"integrity": "sha512-mH0bcIKv4XAN0mQVokfTdKo2OD5K8WJE9+lbMdM32/q0Ie5tXgVN/2o+zvToRMxSTUuiTRcLg5hzkFfOyBYreg==",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/graphlib": { "node_modules/graphlib": {
"version": "2.1.8", "version": "2.1.8",
"resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
@ -985,6 +994,11 @@
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"optional": true "optional": true
}, },
"github-markdown-css": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/github-markdown-css/-/github-markdown-css-4.0.0.tgz",
"integrity": "sha512-mH0bcIKv4XAN0mQVokfTdKo2OD5K8WJE9+lbMdM32/q0Ie5tXgVN/2o+zvToRMxSTUuiTRcLg5hzkFfOyBYreg=="
},
"graphlib": { "graphlib": {
"version": "2.1.8", "version": "2.1.8",
"resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",

@ -2,6 +2,7 @@
"dependencies": { "dependencies": {
"@fontsource/roboto": "^4.2.0", "@fontsource/roboto": "^4.2.0",
"dropzone": "^5.7.6", "dropzone": "^5.7.6",
"github-markdown-css": "^4.0.0",
"jquery": "^3.5.0", "jquery": "^3.5.0",
"mathjax": "^3.1.2", "mathjax": "^3.1.2",
"mermaid": "^8.9.0", "mermaid": "^8.9.0",

@ -27,7 +27,7 @@ func init() {
bmPolicy.AllowElements("style") bmPolicy.AllowElements("style")
bmPolicy.AllowAttrs("checked", "disabled", "type").OnElements("input") bmPolicy.AllowAttrs("checked", "disabled", "type").OnElements("input")
bmPolicy.AllowAttrs("width", "height", "align").OnElements("img") bmPolicy.AllowAttrs("width", "height", "align").OnElements("img")
bmPolicy.AllowAttrs("style", "class", "align").OnElements("span", "p", "div", "a") bmPolicy.AllowAttrs("style", "class", "align").OnElements("span", "p", "div", "a", "table", "tr", "td", "th")
md = goldmark.New( md = goldmark.New(
goldmark.WithExtensions(extension.GFM), goldmark.WithExtensions(extension.GFM),
goldmark.WithExtensions(mathjax.MathJax), goldmark.WithExtensions(mathjax.MathJax),

@ -112,6 +112,10 @@ function retagContent() {
window.MathJax.typeset(); window.MathJax.typeset();
} }
// Reapply syntax highlight
hljs.initHighlighting.called = false;
hljs.initHighlighting();
// Re-render Mermaid diagrams // Re-render Mermaid diagrams
mermaid.init(); mermaid.init();
} }

@ -13,6 +13,8 @@ def browser():
options.add_argument("--headless") options.add_argument("--headless")
options.add_argument("window-size=1920,1080") options.add_argument("window-size=1920,1080")
browser = webdriver.Chrome(options=options) browser = webdriver.Chrome(options=options)
browser.get(INDEX_URL)
assert_no_javascript_errors(browser)
yield browser yield browser
browser.quit() browser.quit()
@ -32,15 +34,7 @@ def assert_no_javascript_errors(browser):
) )
def test_index_should_redirect_to_edit(browser):
browser.get(INDEX_URL)
assert "/edit" in browser.current_url
def test_should_edit(browser): def test_should_edit(browser):
browser.get(INDEX_URL)
assert_no_javascript_errors(browser)
# Type a new note # Type a new note
user_input = browser.find_element_by_id("userInput") user_input = browser.find_element_by_id("userInput")
user_input.clear() user_input.clear()
@ -81,9 +75,6 @@ def test_should_edit(browser):
def test_upload(browser): def test_upload(browser):
browser.get(INDEX_URL)
assert_no_javascript_errors(browser)
# Upload a file # Upload a file
upload_file(browser, "readme.txt", "src/python/assets/readme.txt") upload_file(browser, "readme.txt", "src/python/assets/readme.txt")
sleep(1) sleep(1)
@ -91,3 +82,37 @@ def test_upload(browser):
# Should create a link # Should create a link
browser.find_element_by_link_text("readme.txt") browser.find_element_by_link_text("readme.txt")
def test_code_highlight(browser):
# Type some source code
user_input = browser.find_element_by_id("userInput")
user_input.clear()
user_input.send_keys(
"```python\n"
"def hello_world():\n"
" print('Hello')\n"
"```\n"
)
sleep(1)
assert_no_javascript_errors(browser)
# Should create highlighted elements
browser.find_element_by_css_selector(".hljs-title")
def test_mermaid(browser):
# Draw a diagram
user_input = browser.find_element_by_id("userInput")
user_input.clear()
user_input.send_keys(
'<div class="mermaid">\n'
'graph TD\n'
' hello --> world\n'
'</div>\n'
)
sleep(1)
assert_no_javascript_errors(browser)
# Should create highlighted elements
browser.find_element_by_tag_name("svg")

Loading…
Cancel
Save