aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/tests/test_first_load_is_lean.py
blob: 74cd880660f4dd3ace94d8d1ca676f3b14178606 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
What a browser downloads before the first screen renders.

ES modules load their static `import` graph up front, whether the visitor opens
what it leads to or not. The Videos, Music and Photos apps, the video player,
the group settings and the search page used to be part of it — about a quarter
of the client, paid by a member who only opens the chat. They are now fetched
the first time they are shown (lazy.js); one static import added back anywhere
on the path from app.js would quietly undo that, and nothing else would fail.
"""

import re
from pathlib import Path

STATIC = Path(__file__).resolve().parents[1] / "src" / "meshbay_hub" / "static"

STATIC_IMPORT = re.compile(
    r"""^\s*(?:import|export)\b[^'";]*?\bfrom\s*['"]\./([^'"]+)['"]"""
    r"""|^\s*import\s*['"]\./([^'"]+)['"]""", re.M)

# Loaded on demand, never at start-up.
ON_DEMAND = {
    "video-app.js", "music-app.js", "photos-app.js", "helloworld-app.js",
    "chat-app-settings.js", "video-app-settings.js", "music-app-settings.js",
    "photos-app-settings.js", "helloworld-app-settings.js",
    "video-player.js", "group-settings.js", "search-page.js",
}


def _eager() -> set[str]:
    seen, stack = set(), ["app.js"]
    while stack:
        name = stack.pop()
        if name in seen or not (STATIC / name).exists():
            continue
        seen.add(name)
        text = (STATIC / name).read_text(encoding="utf-8")
        stack += [a or b for a, b in STATIC_IMPORT.findall(text)]
    return seen


def test_the_first_download_leaves_the_apps_out():
    eager = _eager()
    assert len(eager) > 20, "the import graph was not followed — re-read this test"
    brought_back = sorted(eager & ON_DEMAND)
    assert not brought_back, (
        f"loaded at start-up again: {brought_back} — a static import on the "
        f"path from app.js; import it through lazy.js instead")


def test_every_module_loaded_on_demand_still_exists():
    """A rename would make the check above pass for a file nobody serves."""
    missing = sorted(n for n in ON_DEMAND if not (STATIC / n).exists())
    assert not missing, missing