Spaces:
Running on Zero
Running on Zero
| import theme | |
| def test_amber_palette_tokens_match_spec(): | |
| pal = theme.AMBER | |
| assert pal["body_bg"] == "#0F0C08" | |
| assert pal["text"] == "#FAF1E3" | |
| assert pal["text_dim"] == "#A89478" | |
| assert pal["border"] == "#2A2218" | |
| assert pal["accent"] == "#FFB02E" | |
| assert pal["accent_text"] == "#1A1208" | |
| assert pal["radius"] == "8px" | |
| def test_build_theme_returns_gradio_base(): | |
| import gradio as gr | |
| th = theme.build_theme() | |
| assert isinstance(th, gr.themes.Base) | |
| def test_css_string_contains_critical_selectors(): | |
| css = theme.CSS | |
| # warm vignette + amber button glow are the two decorations the spec calls out | |
| assert "radial-gradient" in css | |
| assert "rgba(255,176,46" in css.lower() or "255, 176, 46" in css.lower() | |
| def test_fonts_geist_and_geist_mono(): | |
| th = theme.build_theme() | |
| # (a) Iterable lists: .font_list / .font_mono_list expose the original entries. | |
| fonts = [str(f) for f in th.font_list] | |
| assert any("Geist" in f for f in fonts) | |
| monos = [str(f) for f in th.font_mono_list] | |
| assert any("Geist Mono" in f for f in monos) | |
| # (b) CSS variables: _get_theme_css() must emit --font and --font-mono that | |
| # reference Geist / Geist Mono so the browser actually loads the fonts. | |
| # This assertion is what catches the original bug where property setters | |
| # redirected self.font → font_str, causing --font-str to be emitted instead. | |
| css = th._get_theme_css() | |
| assert "--font:" in css, "--font CSS variable missing from generated theme CSS" | |
| assert "--font-mono:" in css, "--font-mono CSS variable missing from generated theme CSS" | |
| assert "Geist" in css, "Geist font name missing from generated theme CSS" | |
| assert "Geist Mono" in css, "Geist Mono font name missing from generated theme CSS" | |
| def test_css_includes_param_tooltip_rule(): | |
| css = theme.CSS | |
| assert ".zis-info" in css | |
| assert "data-info" in css # attr() reference in ::after | |
| assert "::after" in css | |
| def test_css_includes_model_selector_rules(): | |
| css = theme.CSS | |
| assert ".zis-models" in css | |
| assert ".zis-model" in css | |
| assert ".zis-model.on" in css | |
| assert ".zis-model.soon" in css | |
| def test_css_model_grid_is_responsive(): | |
| css = theme.CSS | |
| assert "grid-template-columns" in css | |
| assert "@media" in css | |
| assert "min-width: 768px" in css or "min-width:768px" in css | |