mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-13 03:32:21 +02:00
163 lines
6.5 KiB
Python
163 lines
6.5 KiB
Python
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_bulk_select_triggers_share_dot_and_x_icons():
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
for selector in (
|
|
"#memory-select-btn",
|
|
"#skills-select-btn",
|
|
"#notes-select-btn",
|
|
"#tasks-select-btn",
|
|
"#doclib-chats-select-btn",
|
|
"#doclib-arc-select-btn",
|
|
"#doclib-research-select-btn",
|
|
"#doclib-select-btn",
|
|
"#gallery-select-btn",
|
|
"#gallery-albums-select-btn",
|
|
"#gallery-editor-drafts-select",
|
|
"#email-lib-select-btn",
|
|
"#archive-select-btn",
|
|
"#lib-select-btn",
|
|
"#hwfit-cache-select",
|
|
):
|
|
assert selector in css
|
|
|
|
assert "cy='11'" in css
|
|
assert ").active::before" in css
|
|
assert "#skills-select-btn::before" in css
|
|
assert "translateY(1px)" in css
|
|
|
|
|
|
def test_library_titles_have_highlighted_respective_icons():
|
|
source = (ROOT / "static" / "js" / "documentLibrary.js").read_text()
|
|
|
|
assert source.count('class="doclib-section-title-icon"') == 4
|
|
assert "color: var(--accent, var(--red));" in (ROOT / "static" / "style.css").read_text()
|
|
for title in ("Chats", "Archive", "Research", "Documents"):
|
|
assert f">{title} <span" in source
|
|
|
|
|
|
def test_library_select_follows_tidy():
|
|
source = (ROOT / "static" / "js" / "documentLibrary.js").read_text()
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
assert source.index('id="doclib-chats-tidy-btn"') < source.index('id="doclib-chats-select-btn"')
|
|
assert source.index('id="doclib-research-tidy-btn"') < source.index('id="doclib-research-select-btn"')
|
|
assert source.index('id="doclib-tidy-btn"') < source.index('id="doclib-select-btn"')
|
|
rule_start = css.rindex('[data-doclib-panel="documents"] #doclib-tidy-btn,')
|
|
rule = css[rule_start:rule_start + 150]
|
|
assert "#doclib-select-btn" in rule
|
|
assert "top: 1px;" in rule
|
|
|
|
chats_start = css.rindex("#doclib-panel-chats #doclib-chats-tidy-btn,")
|
|
chats_rule = css[chats_start:chats_start + 200]
|
|
assert "#doclib-chats-select-btn" in chats_rule
|
|
assert "#doclib-arc-select-btn" in chats_rule
|
|
assert "top: 1px;" in chats_rule
|
|
|
|
research_start = css.rindex("#doclib-panel-research #doclib-research-tidy-btn,")
|
|
research_rule = css[research_start:research_start + 150]
|
|
assert "#doclib-research-select-btn" in research_rule
|
|
assert "top: -0.5px;" in research_rule
|
|
|
|
|
|
def test_library_filter_chips_match_skills_count_markup():
|
|
source = (ROOT / "static" / "js" / "documentLibrary.js").read_text()
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
assert "function _setLibraryCountChipContent" in source
|
|
assert "chip.replaceChildren(text, value)" in source
|
|
assert source.count("className = 'skills-summary-chip'") >= 4
|
|
assert "label + ' (' + count + ')'" not in source
|
|
assert ".doclib-lang-chips > :is(.memory-cat-chip, .skills-summary-chip)" in css
|
|
assert "min-height: 25px;" in css
|
|
|
|
|
|
def test_launch_cookbook_filter_chips_match_skills():
|
|
source = (ROOT / "static" / "js" / "cookbookServe.js").read_text()
|
|
|
|
assert 'class="skills-summary-chip active" data-serve-tag=""' in source
|
|
assert 'class="skills-summary-chip" data-serve-tag=' in source
|
|
assert '<span>All</span><strong>${allModels.length}</strong>' in source
|
|
assert "querySelector('[data-serve-tag].active')" in source
|
|
assert "querySelectorAll('[data-serve-tag]')" in source
|
|
assert 'class="memory-cat-chip" data-serve-tag=' not in source
|
|
|
|
|
|
def test_launch_search_select_and_tags_move_up_together():
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
rule = css[css.index("#serve-search,"):css.index("#serve-search,") + 140]
|
|
assert "#hwfit-cache-select," in rule
|
|
assert "#serve-tags" in rule
|
|
assert "top: -2px;" in rule
|
|
|
|
select_start = css.rindex("#hwfit-cache-select {")
|
|
select_rule = css[select_start:select_start + 150]
|
|
assert "top: -3px;" in select_rule
|
|
list_start = css.index("#hwfit-cached-list {", css.index("#hwfit-cache-select {"))
|
|
list_rule = css[list_start:list_start + 90]
|
|
assert "top: -6px;" in list_rule
|
|
|
|
bulk_start = css.index("#serve-bulk-bar {")
|
|
bulk_rule = css[bulk_start:bulk_start + 100]
|
|
assert "top: -6px;" in bulk_rule
|
|
|
|
|
|
def test_launch_server_selector_and_model_search_move_up_together():
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
rule = css[css.index("#hwfit-server-select,"):css.index("#hwfit-server-select,") + 130]
|
|
assert "#hwfit-search" in rule
|
|
assert "top: -2px !important;" in rule
|
|
|
|
|
|
def test_launch_heading_uses_accented_flame_icon():
|
|
source = (ROOT / "static" / "js" / "cookbook.js").read_text()
|
|
|
|
heading = source[source.index('id="serve-stats"') - 500:source.index('id="serve-stats"') + 120]
|
|
assert ">Launch <span id=\"serve-stats\"" in heading
|
|
assert "color:var(--accent, var(--red));" in heading
|
|
|
|
|
|
def test_launch_heading_reports_cached_model_count():
|
|
source = (ROOT / "static" / "js" / "cookbookServe.js").read_text()
|
|
|
|
assert "function _syncServeStats()" in source
|
|
assert "stats.textContent = `${count} model${count === 1 ? '' : 's'}`;" in source
|
|
assert source.count("_syncServeStats();") >= 2
|
|
|
|
|
|
def test_launch_search_matches_document_library_search_treatment():
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
rule = css[css.index("#hwfit-search {", css.index("#hwfit-server-select,")):][:700]
|
|
assert "height: 30px;" in rule
|
|
assert "font-family: inherit;" in rule
|
|
assert "font-size: 11px;" in rule
|
|
assert "background-image: url(" in rule
|
|
assert "padding-left: 28px;" in rule
|
|
|
|
cached_search_start = css.rindex("#serve-search {")
|
|
cached_search_rule = css[cached_search_start:cached_search_start + 800]
|
|
assert "background-image: url(" in cached_search_rule
|
|
assert "background-position: 9px center;" in cached_search_rule
|
|
assert "padding-left: 28px;" in cached_search_rule
|
|
|
|
|
|
def test_memory_filter_chips_match_skills_and_are_not_cropped():
|
|
source = (ROOT / "static" / "js" / "memory.js").read_text()
|
|
css = (ROOT / "static" / "style.css").read_text()
|
|
|
|
assert "skills-summary-chip memory-filter-chip" in source
|
|
assert "btn.replaceChildren(label, count)" in source
|
|
assert "cat === 'all' ? memories.length : counts[cat] || 0" in source
|
|
assert "#memory-category-filters > .skills-summary-chip" in css
|
|
rule = css[css.index("#memory-category-filters {"):css.index("#memory-category-filters {") + 180]
|
|
assert "min-height: 25px;" in rule
|
|
assert "padding: 1px 0 !important;" in rule
|