feat: add TTLCache for get_cache_version and TEMPLATE_AUTO_RELOAD config with Makefile worker count variables

This commit is contained in:
2026-06-14 14:46:36 +00:00
parent c151325916
commit d75d5dc6a8
149 changed files with 9811 additions and 262 deletions
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+4
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -157,6 +159,8 @@ def _seed_news_audit_log():
title = _unique("aunews")
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,
View File
+23
View File
@@ -0,0 +1,23 @@
# retoor <retoor@molodetz.nl>
from tests.conftest import BASE_URL
def test_admin_bots_page_loads(alice):
page, _ = alice
page.goto(f"{BASE_URL}/admin/bots", wait_until="domcontentloaded")
assert page.is_visible("text=Bot Monitor")
assert page.locator("#bots-grid").count() == 1
def test_admin_bots_sidebar_link(alice):
page, _ = alice
page.goto(f"{BASE_URL}/admin/services", wait_until="domcontentloaded")
link = page.locator("a.sidebar-link[href='/admin/bots']")
link.wait_for(state="visible")
assert link.count() == 1
def test_admin_bots_redirect_unauth(page, app_server):
page.goto(f"{BASE_URL}/admin/bots", wait_until="domcontentloaded")
assert page.url.startswith(f"{BASE_URL}/auth/login")
+93
View File
@@ -1,9 +1,25 @@
# retoor <retoor@molodetz.nl>
import requests
from playwright.sync_api import expect
from tests.conftest import BASE_URL
from devplacepy.database import get_table
USER_INPUT = '#cm-admin-create-form input[data-search="user"]'
USER_OPTIONS = '#cm-admin-create-form [data-suggest="user"] li[data-value]'
RUN_AS_HIDDEN = '#cm-admin-create-form input[name="run_as_uid"]'
def _open_user_search(page):
page.goto(f"{BASE_URL}/admin/containers", wait_until="domcontentloaded")
page.click('[data-modal="cm-admin-create-modal"]')
inp = page.locator(USER_INPUT)
inp.wait_for(state="visible")
inp.fill("test")
options = page.locator(USER_OPTIONS)
options.first.wait_for(state="visible")
return inp, options
def test_containers_admin_page_loads(alice, app_server):
page, user = alice
@@ -15,3 +31,80 @@ def test_container_instance_page_404_for_missing(alice, app_server):
page, _ = alice
page.goto(f"{BASE_URL}/admin/containers/nonexistent", wait_until="domcontentloaded")
assert page.is_visible("text=Not Found") or page.is_visible("text=404")
def test_user_search_arrow_keys_highlight_and_enter_selects(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
count = options.count()
assert count >= 1
inp.press("ArrowDown")
expect(options.nth(0)).to_have_class("cm-suggest-active")
target = options.nth(0)
if count >= 2:
inp.press("ArrowDown")
expect(options.nth(1)).to_have_class("cm-suggest-active")
expect(options.nth(0)).not_to_have_class("cm-suggest-active")
target = options.nth(1)
label = target.get_attribute("data-label")
inp.press("Enter")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert inp.input_value() == label
assert page.locator(RUN_AS_HIDDEN).input_value() != ""
def test_user_search_arrow_up_wraps_to_last(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
if options.count() < 2:
return
last = options.count() - 1
inp.press("ArrowUp")
expect(options.nth(last)).to_have_class("cm-suggest-active")
def test_user_search_tab_navigates_options(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
inp.press("Tab")
expect(options.nth(0)).to_have_class("cm-suggest-active")
if options.count() >= 2:
inp.press("Tab")
expect(options.nth(1)).to_have_class("cm-suggest-active")
def test_user_search_tab_past_last_selects_and_releases(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
count = options.count()
label = options.nth(count - 1).get_attribute("data-label")
for _ in range(count + 1):
inp.press("Tab")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert inp.input_value() == label
assert page.locator(RUN_AS_HIDDEN).input_value() != ""
assert not inp.evaluate("el => el === document.activeElement")
def test_user_search_escape_closes_without_selecting(alice, seeded_db):
page, _ = alice
inp, _ = _open_user_search(page)
inp.press("Escape")
expect(page.locator(USER_OPTIONS)).to_have_count(0)
assert page.locator(RUN_AS_HIDDEN).input_value() == ""
def test_user_search_has_combobox_aria(alice, seeded_db):
page, _ = alice
inp, options = _open_user_search(page)
assert inp.get_attribute("role") == "combobox"
assert inp.get_attribute("aria-expanded") == "true"
inp.press("ArrowDown")
active = inp.get_attribute("aria-activedescendant")
assert active
assert options.nth(0).get_attribute("id") == active
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+2
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
+4
View File
@@ -17,6 +17,8 @@ def seed_admin_news(count=3):
slug = make_combined_slug(title, uid)
news_table.insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": slug,
"title": title,
@@ -157,6 +159,8 @@ def _seed_news_audit_log():
title = _unique("aunews")
get_table("news").insert(
{
"deleted_at": None,
"deleted_by": None,
"uid": uid,
"slug": make_combined_slug(title, uid),
"title": title,