Test Failed
Push — master ( ae3125...7a2ee5 )
by Nicolas
02:38
created

test_webui.glances_homepage()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
#!/usr/bin/env python
2
#
3
# Glances - An eye on your system
4
#
5
# SPDX-FileCopyrightText: 2024 Nicolas Hennion <[email protected]>
6
#
7
# SPDX-License-Identifier: LGPL-3.0-only
8
#
9
10
"""Glances unitary tests suite for the WebUI."""
11
12
import os
13
import tempfile
14
15
import pytest
16
from selenium.webdriver.common.by import By
17
18
19
@pytest.fixture(scope="module")
20
def glances_homepage(firefox_browser):
21
    firefox_browser.get("http://localhost:61234")
22
    firefox_browser.save_screenshot(os.path.join(tempfile.gettempdir(), "glances.png"))
23
    return firefox_browser
24
25
26
def test_loading_time(glances_webserver, glances_homepage):
27
    """
28
    Test Glances home page loading time.
29
    """
30
    assert glances_webserver is not None
31
    navigation_start = glances_homepage.execute_script("return window.performance.timing.navigationStart")
32
    response_start = glances_homepage.execute_script("return window.performance.timing.responseStart")
33
    dom_complete = glances_homepage.execute_script("return window.performance.timing.domComplete")
34
    backend_perf = response_start - navigation_start
35
    frontend_perf = dom_complete - response_start
36
    assert backend_perf < 1000  # ms
37
    assert frontend_perf < 1000  # ms
38
39
40
def test_title(glances_webserver, glances_homepage):
41
    """
42
    Test Glances home page title.
43
    """
44
    assert glances_webserver is not None
45
    assert "Glances" in glances_homepage.title
46
47
48
def test_plugins(glances_webserver, glances_homepage):
49
    """
50
    Test Glances defaults plugins.
51
    """
52
    assert glances_webserver is not None
53
    for plugin in [
54
        "system",
55
        "now",
56
        "uptime",
57
        "quicklook",
58
        "cpu",
59
        "mem",
60
        "memswap",
61
        "load",
62
        "network",
63
        "diskio",
64
        "fs",
65
        "sensors",
66
        "processcount",
67
        "processlist",
68
    ]:
69
        assert glances_homepage.find_element(By.ID, plugin) is not None
70