diff --git a/fps_plugins/voila/fps_voila/routes.py b/fps_plugins/voila/fps_voila/routes.py index 933d8d889..8b378ff6d 100644 --- a/fps_plugins/voila/fps_voila/routes.py +++ b/fps_plugins/voila/fps_voila/routes.py @@ -6,6 +6,7 @@ from voila.handler import _VoilaHandler, _get from voila.treehandler import _VoilaTreeHandler, _get as _get_tree +from voila.paths import collect_static_paths from nbclient.util import ensure_async from mimetypes import guess_type @@ -193,14 +194,22 @@ def get_whitelisted_file(path): def get_static_file(path): return _get_file_in_dirs(path, fps_voila_handler.static_paths) -@router.get("/voila/templates/lab/static/{path:path}") -def get_template_static_file(path): - return _get_file_in_dirs(path, fps_voila_handler.static_paths) +@router.get("/voila/templates/{path:path}") +def get_template_file(path): + template, static, relpath = os.path.normpath(path).split(os.path.sep, 2) + assert static == "static" + roots = collect_static_paths(["voila", "nbconvert"], template) + for root in roots: + abspath = os.path.abspath(os.path.join(root, relpath)) + if os.path.exists(abspath): + return _get_file(abspath) + break + raise HTTPException(status_code=404, detail="File not found") def _get_file_in_dirs(path, dirs): for d in dirs: p = Path(d) / path - if p .is_file(): + if p.is_file(): return _get_file(p) else: raise HTTPException(status_code=404, detail="File not found") diff --git a/ui-tests/copy_png b/ui-tests/copy_png new file mode 100755 index 000000000..0b68db3ef --- /dev/null +++ b/ui-tests/copy_png @@ -0,0 +1,23 @@ +cd tests/voila.test.ts-snapshots + +cp basics-linux.png basics-voila-linux.png +cp query-strings-linux.png query-strings-voila-linux.png +cp multiple-widgets-linux.png multiple-widgets-voila-linux.png +cp ipympl-linux.png ipympl-voila-linux.png +cp reveal-linux.png reveal-voila-linux.png +cp ipyvolume-linux.png ipyvolume-voila-linux.png +cp bqplot-linux.png bqplot-voila-linux.png +cp interactive-linux.png interactive-voila-linux.png +cp gridspecLayout-linux.png gridspecLayout-voila-linux.png + +cp basics-linux.png basics-voila-fps-linux.png +cp query-strings-linux.png query-strings-voila-fps-linux.png +cp multiple-widgets-linux.png multiple-widgets-voila-fps-linux.png +cp ipympl-linux.png ipympl-voila-fps-linux.png +cp reveal-linux.png reveal-voila-fps-linux.png +cp ipyvolume-linux.png ipyvolume-voila-fps-linux.png +cp bqplot-linux.png bqplot-voila-fps-linux.png +cp interactive-linux.png interactive-voila-fps-linux.png +cp gridspecLayout-linux.png gridspecLayout-voila-fps-linux.png + +cd ../.. diff --git a/ui-tests/package.json b/ui-tests/package.json index 021ceedb9..f9690704c 100644 --- a/ui-tests/package.json +++ b/ui-tests/package.json @@ -7,7 +7,7 @@ "start": "voila ../notebooks --no-browser", "start-fps": "voila ../notebooks --no-browser --fps --port=8867", "start:detached": "yarn run start-jlab&", - "test": "playwright test --project voila", + "test": "./copy_png && playwright test --project voila", "test-fps": "playwright test --project voila-fps", "test:debug": "PWDEBUG=1 playwright test --project voila", "test:report": "http-server ./playwright-report -a localhost -o",