pytorch-lightning

Форк
0
73 строки · 2.6 Кб
1
import contextlib
2
from time import sleep
3

4
import pytest
5
from lightning.app.testing.testing import run_app_in_cloud
6
from lightning.app.utilities.imports import _is_playwright_available
7

8
from integrations_app.flagship import _PATH_INTEGRATIONS_DIR
9

10
if _is_playwright_available():
11
    import playwright
12
    from playwright.sync_api import Page, expect
13

14

15
# TODO: when this function is moved to the app itself we can just import it, so to keep better aligned
16
def validate_app_functionalities(app_page: "Page") -> None:
17
    """Validate the page after app starts.
18

19
    this is direct copy-paste of validation living in the app repository:
20
    https://github.com/Lightning-AI/LAI-Flashy-App/blob/main/tests/test_app_gallery.py#L205
21

22
    app_page: The UI page of the app to be validated.
23

24
    """
25
    while True:
26
        with contextlib.suppress(playwright._impl._api_types.Error, playwright._impl._api_types.TimeoutError):
27
            app_page.reload()
28
            sleep(5)
29
            app_label = app_page.frame_locator("iframe").locator("text=Choose your AI task")
30
            app_label.wait_for(timeout=30 * 1000)
31
            break
32

33
    input_field = app_page.frame_locator("iframe").locator('input:below(:text("Data URL"))').first
34
    input_field.wait_for(timeout=1000)
35
    input_field.type("https://pl-flash-data.s3.amazonaws.com/hymenoptera_data.zip")
36
    sleep(1)
37
    upload_btn = app_page.frame_locator("iframe").locator('button:has-text("Upload")')
38
    upload_btn.wait_for(timeout=1000)
39
    upload_btn.click()
40

41
    sleep(10)
42

43
    train_folder_dropdown = app_page.frame_locator("iframe").locator("#mui-2")
44
    train_folder_dropdown.click()
45

46
    train_folder = app_page.frame_locator("iframe").locator('text="hymenoptera_data/train"')
47
    train_folder.scroll_into_view_if_needed()
48
    train_folder.click()
49

50
    val_folder_dropdown = app_page.frame_locator("iframe").locator("#mui-3")
51
    val_folder_dropdown.click()
52

53
    val_folder = app_page.frame_locator("iframe").locator('text="hymenoptera_data/val"')
54
    val_folder.scroll_into_view_if_needed()
55
    val_folder.click()
56

57
    train_btn = app_page.frame_locator("iframe").locator('button:has-text("Start training!")')
58
    train_btn.click()
59

60
    # Sometimes the results don't show until we refresh the page
61
    sleep(10)
62

63
    app_page.reload()
64

65
    app_page.frame_locator("iframe").locator('button:has-text("RESULTS")').click()
66
    runs = app_page.frame_locator("iframe").locator("table tbody tr")
67
    expect(runs).to_have_count(1, timeout=120000)
68

69

70
@pytest.mark.cloud()
71
def test_app_cloud() -> None:
72
    with run_app_in_cloud(_PATH_INTEGRATIONS_DIR) as (_, view_page, _, _):
73
        validate_app_functionalities(view_page)
74

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.