From a36209ecf6a9a0a485490387b9bd99382abaaf07 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 15:53:48 -0400 Subject: [PATCH 01/17] add two apps. Need configs and testing --- .../connect/connect_posit_it_vanilla/app.py | 14 +++++++++++ .../connect_posit_it_vanilla/requirements.txt | 2 ++ .../test_deploys_express_page_sidebar.py | 23 +++++++++++++++++++ .../playwright/connect/dogfood_vanilla/app.py | 14 +++++++++++ .../connect/dogfood_vanilla/requirements.txt | 2 ++ .../test_deploys_express_page_sidebar.py | 23 +++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 tests/playwright/connect/connect_posit_it_vanilla/app.py create mode 100644 tests/playwright/connect/connect_posit_it_vanilla/requirements.txt create mode 100644 tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py create mode 100644 tests/playwright/connect/dogfood_vanilla/app.py create mode 100644 tests/playwright/connect/dogfood_vanilla/requirements.txt create mode 100644 tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py diff --git a/tests/playwright/connect/connect_posit_it_vanilla/app.py b/tests/playwright/connect/connect_posit_it_vanilla/app.py new file mode 100644 index 000000000..455326083 --- /dev/null +++ b/tests/playwright/connect/connect_posit_it_vanilla/app.py @@ -0,0 +1,14 @@ +from shiny import render +from shiny.express import input, ui + +ui.page_opts(title="PageTitle") + +with ui.sidebar(id="sidebar", title="SidebarTitle"): + "Sidebar Content" + +with ui.card(id="card"): + ui.input_slider("a", "A", 1, 100, 50) + + @render.code + def txt(): + return input.a() diff --git a/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt b/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt new file mode 100644 index 000000000..81b7c1983 --- /dev/null +++ b/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt @@ -0,0 +1,2 @@ +htmltools +shiny diff --git a/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py b/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py new file mode 100644 index 000000000..f0f388774 --- /dev/null +++ b/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py @@ -0,0 +1,23 @@ +import pytest +from playwright.sync_api import Page +from utils.deploy_utils import ( + create_deploys_app_url_fixture, + reruns, + reruns_delay, + skip_if_not_chrome, +) + +from shiny.playwright import controller + +app_url = create_deploys_app_url_fixture("connect-vanilla-shiny") + + +@skip_if_not_chrome +@pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay) +def test_express_page_sidebar(page: Page, app_url: str) -> None: + page.goto(app_url) + + sidebar = controller.Sidebar(page, "sidebar") + sidebar.expect_text("SidebarTitle Sidebar Content") + output_txt = controller.OutputTextVerbatim(page, "txt") + output_txt.expect_value("50") diff --git a/tests/playwright/connect/dogfood_vanilla/app.py b/tests/playwright/connect/dogfood_vanilla/app.py new file mode 100644 index 000000000..455326083 --- /dev/null +++ b/tests/playwright/connect/dogfood_vanilla/app.py @@ -0,0 +1,14 @@ +from shiny import render +from shiny.express import input, ui + +ui.page_opts(title="PageTitle") + +with ui.sidebar(id="sidebar", title="SidebarTitle"): + "Sidebar Content" + +with ui.card(id="card"): + ui.input_slider("a", "A", 1, 100, 50) + + @render.code + def txt(): + return input.a() diff --git a/tests/playwright/connect/dogfood_vanilla/requirements.txt b/tests/playwright/connect/dogfood_vanilla/requirements.txt new file mode 100644 index 000000000..81b7c1983 --- /dev/null +++ b/tests/playwright/connect/dogfood_vanilla/requirements.txt @@ -0,0 +1,2 @@ +htmltools +shiny diff --git a/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py b/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py new file mode 100644 index 000000000..81fc050c4 --- /dev/null +++ b/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py @@ -0,0 +1,23 @@ +import pytest +from playwright.sync_api import Page +from utils.deploy_utils import ( + create_deploys_app_url_fixture, + reruns, + reruns_delay, + skip_if_not_chrome, +) + +from shiny.playwright import controller + +app_url = create_deploys_app_url_fixture("dogfood-vanilla-shiny") + + +@skip_if_not_chrome +@pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay) +def test_express_page_sidebar(page: Page, app_url: str) -> None: + page.goto(app_url) + + sidebar = controller.Sidebar(page, "sidebar") + sidebar.expect_text("SidebarTitle Sidebar Content") + output_txt = controller.OutputTextVerbatim(page, "txt") + output_txt.expect_value("50") From f413d18ec3a1218a5e411bfd2fdd23221859e123 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:44:06 -0400 Subject: [PATCH 02/17] Remove vanilla apps --- .../connect/connect_posit_it_vanilla/app.py | 14 ----------- .../connect_posit_it_vanilla/requirements.txt | 2 -- .../test_deploys_express_page_sidebar.py | 23 ------------------- .../playwright/connect/dogfood_vanilla/app.py | 14 ----------- .../connect/dogfood_vanilla/requirements.txt | 2 -- .../test_deploys_express_page_sidebar.py | 23 ------------------- 6 files changed, 78 deletions(-) delete mode 100644 tests/playwright/connect/connect_posit_it_vanilla/app.py delete mode 100644 tests/playwright/connect/connect_posit_it_vanilla/requirements.txt delete mode 100644 tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py delete mode 100644 tests/playwright/connect/dogfood_vanilla/app.py delete mode 100644 tests/playwright/connect/dogfood_vanilla/requirements.txt delete mode 100644 tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py diff --git a/tests/playwright/connect/connect_posit_it_vanilla/app.py b/tests/playwright/connect/connect_posit_it_vanilla/app.py deleted file mode 100644 index 455326083..000000000 --- a/tests/playwright/connect/connect_posit_it_vanilla/app.py +++ /dev/null @@ -1,14 +0,0 @@ -from shiny import render -from shiny.express import input, ui - -ui.page_opts(title="PageTitle") - -with ui.sidebar(id="sidebar", title="SidebarTitle"): - "Sidebar Content" - -with ui.card(id="card"): - ui.input_slider("a", "A", 1, 100, 50) - - @render.code - def txt(): - return input.a() diff --git a/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt b/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt deleted file mode 100644 index 81b7c1983..000000000 --- a/tests/playwright/connect/connect_posit_it_vanilla/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -htmltools -shiny diff --git a/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py b/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py deleted file mode 100644 index f0f388774..000000000 --- a/tests/playwright/connect/connect_posit_it_vanilla/test_deploys_express_page_sidebar.py +++ /dev/null @@ -1,23 +0,0 @@ -import pytest -from playwright.sync_api import Page -from utils.deploy_utils import ( - create_deploys_app_url_fixture, - reruns, - reruns_delay, - skip_if_not_chrome, -) - -from shiny.playwright import controller - -app_url = create_deploys_app_url_fixture("connect-vanilla-shiny") - - -@skip_if_not_chrome -@pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay) -def test_express_page_sidebar(page: Page, app_url: str) -> None: - page.goto(app_url) - - sidebar = controller.Sidebar(page, "sidebar") - sidebar.expect_text("SidebarTitle Sidebar Content") - output_txt = controller.OutputTextVerbatim(page, "txt") - output_txt.expect_value("50") diff --git a/tests/playwright/connect/dogfood_vanilla/app.py b/tests/playwright/connect/dogfood_vanilla/app.py deleted file mode 100644 index 455326083..000000000 --- a/tests/playwright/connect/dogfood_vanilla/app.py +++ /dev/null @@ -1,14 +0,0 @@ -from shiny import render -from shiny.express import input, ui - -ui.page_opts(title="PageTitle") - -with ui.sidebar(id="sidebar", title="SidebarTitle"): - "Sidebar Content" - -with ui.card(id="card"): - ui.input_slider("a", "A", 1, 100, 50) - - @render.code - def txt(): - return input.a() diff --git a/tests/playwright/connect/dogfood_vanilla/requirements.txt b/tests/playwright/connect/dogfood_vanilla/requirements.txt deleted file mode 100644 index 81b7c1983..000000000 --- a/tests/playwright/connect/dogfood_vanilla/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -htmltools -shiny diff --git a/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py b/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py deleted file mode 100644 index 81fc050c4..000000000 --- a/tests/playwright/connect/dogfood_vanilla/test_deploys_express_page_sidebar.py +++ /dev/null @@ -1,23 +0,0 @@ -import pytest -from playwright.sync_api import Page -from utils.deploy_utils import ( - create_deploys_app_url_fixture, - reruns, - reruns_delay, - skip_if_not_chrome, -) - -from shiny.playwright import controller - -app_url = create_deploys_app_url_fixture("dogfood-vanilla-shiny") - - -@skip_if_not_chrome -@pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay) -def test_express_page_sidebar(page: Page, app_url: str) -> None: - page.goto(app_url) - - sidebar = controller.Sidebar(page, "sidebar") - sidebar.expect_text("SidebarTitle Sidebar Content") - output_txt = controller.OutputTextVerbatim(page, "txt") - output_txt.expect_value("50") From 92cf762b09f6ea13fa05b4a01823a2a88ba4887e Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:45:08 -0400 Subject: [PATCH 03/17] Update `playwright-deploys` to use `TEST_FILE`. Add `playwright-deploys-legacy` for now --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index cc6eb67f2..de5e12251 100644 --- a/Makefile +++ b/Makefile @@ -173,6 +173,8 @@ playwright-shiny: FORCE # end-to-end tests on deployed apps with playwright; (SUB_FILE="" within tests/playwright/deploys/) playwright-deploys: FORCE + $(MAKE) playwright PYTEST_BROWSERS="$(PYTEST_DEPLOYS_BROWSERS)" $(TEST_FILE) +playwright-deploys-legacy: FORCE $(MAKE) playwright TEST_FILE="tests/playwright/deploys/$(SUB_FILE)" PYTEST_BROWSERS="$(PYTEST_DEPLOYS_BROWSERS)" # end-to-end tests on all py-shiny examples with playwright; (SUB_FILE="" within tests/playwright/examples/) From d94f3234fd84af9969cccdc9bc277d422c9f4a01 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:46:53 -0400 Subject: [PATCH 04/17] Comment upload artifact. Haven't used it --- .github/workflows/deploy-tests.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index 775316b14..c6862340c 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -52,9 +52,9 @@ jobs: run: | make playwright-deploys SUB_FILE=". -vv --numprocesses 12" - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: "playright-deploys-${{ matrix.os }}-${{ matrix.python-version }}-results" - path: test-results/ - retention-days: 5 + # - uses: actions/upload-artifact@v4 + # if: failure() + # with: + # name: "playright-deploys-${{ matrix.os }}-${{ matrix.python-version }}-results" + # path: test-results/ + # retention-days: 5 From c6700b1b75610d6c12a91093bb0c20f1802ee6b0 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:47:07 -0400 Subject: [PATCH 05/17] Use new make command --- .github/workflows/deploy-tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index c6862340c..32f15b27a 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -36,7 +36,7 @@ jobs: env: DEPLOY_APPS: "false" run: | - make playwright-deploys SUB_FILE=". -vv" + make playwright-deploys TEST_FILE="${{ matrix.config.base_test_dir }} -vv" - name: Deploy apps and run tests (on `push` or `deploy**` branches) env: @@ -50,7 +50,7 @@ jobs: # Given we are waiting for external servers to finish, # we can have many local processes waiting for deployment to finish run: | - make playwright-deploys SUB_FILE=". -vv --numprocesses 12" + make playwright-deploys TEST_FILE="${{ matrix.config.base_test_dir }} -vv --numprocesses 12" # - uses: actions/upload-artifact@v4 # if: failure() From 402546f7f029b3cf8231aa2f0ae2480350f42101 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:47:46 -0400 Subject: [PATCH 06/17] Set up deploys tests to use a matrix with multiple configurations. Use custom app name to avoid app clashes on same server --- .github/workflows/deploy-tests.yaml | 58 +++++++++++++++++-- .../test_deploys_express_page_sidebar.py | 7 ++- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index 32f15b27a..a8cd1291b 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -16,6 +16,40 @@ jobs: # Matches deploy server python version python-version: ["3.10"] os: [ubuntu-latest] + config: + # Released server, shiny, and rsconnect + - released_connect_server: true + pypi_shiny: true + pypi_rsconnect: true + base_test_dir: "./tests/playwright/deploys/express-page_sidebar" + test_shinyappsio: false + app_name: "pypi-shiny-rsconnect" + + # Released shiny and rsconnect + # Dev server + - released_connect_server: false + pypi_shiny: true + pypi_rsconnect: true + base_test_dir: "./tests/playwright/deploys/express-page_sidebar" + test_shinyappsio: false + app_name: "pypi-shiny-rsconnect" + + # Released shiny + # Dogfood server and rsconnect + - released_connect_server: false + pypi_shiny: true + pypi_rsconnect: false + base_test_dir: "./tests/playwright/deploys/express-page_sidebar" + test_shinyappsio: false + app_name: "pypi-shiny-dev-rsconnect" + + # Dev server, shiny, and rsconnect + - released_connect_server: false + pypi_shiny: false + pypi_rsconnect: false + base_test_dir: "./tests/playwright/deploys" + test_shinyappsio: true + fail-fast: false steps: @@ -27,7 +61,18 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install rsconnect + - name: Install pypi shiny and htmltools (uninstall GitHub versions) + if: ${{ matrix.config.pypi_shiny }} + run: | + uv pip uninstall -y shiny htmltools + uv pip install shiny htmltools + + - name: Install rsconnect (PyPI) + if: ${{ matrix.config.pypi_rsconnect }} + run: | + uv pip install rsconnect + - name: Install rsconnect (GitHub) + if: ${{ ! matrix.config.pypi_rsconnect }} run: | make ci-install-rsconnect @@ -41,11 +86,12 @@ jobs: - name: Deploy apps and run tests (on `push` or `deploy**` branches) env: DEPLOY_APPS: "true" - DEPLOY_CONNECT_SERVER_URL: "https://rsc.radixu.com/" - DEPLOY_CONNECT_SERVER_API_KEY: "${{ secrets.DEPLOY_CONNECT_SERVER_API_KEY }}" - DEPLOY_SHINYAPPS_NAME: "${{ secrets.DEPLOY_SHINYAPPS_NAME }}" - DEPLOY_SHINYAPPS_TOKEN: "${{ secrets.DEPLOY_SHINYAPPS_TOKEN }}" - DEPLOY_SHINYAPPS_SECRET: "${{ secrets.DEPLOY_SHINYAPPS_SECRET }}" + DEPLOY_CONNECT_SERVER_URL: "${{ (matrix.config.released_connect_server && 'https://connect.posit.it/') || 'https://rsc.radixu.com/' }}" + DEPLOY_CONNECT_SERVER_API_KEY: "${{ (matrix.config.released_connect_server && secrets.DEPLOY_CONNECT_POSIT_SERVER_API_KEY) || secrets.DEPLOY_CONNECT_SERVER_API_KEY }}" + DEPLOY_SHINYAPPS_NAME: "${{ matrix.config.test_shinyappsio && matrix.config.shinyapps_name }}" + DEPLOY_SHINYAPPS_TOKEN: "${{ matrix.config.test_shinyappsio && matrix.config.shinyapps_token }}" + DEPLOY_SHINYAPPS_SECRET: "${{ matrix.config.test_shinyappsio && matrix.config.shinyapps_secret }}" + EXPRESS_PAGE_SIDEBAR_NAME: "${{ matrix.config.app_name }}" timeout-minutes: 30 # Given we are waiting for external servers to finish, # we can have many local processes waiting for deployment to finish diff --git a/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py b/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py index 0fdfcb7fe..c525a825e 100644 --- a/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py +++ b/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py @@ -1,3 +1,5 @@ +import os + import pytest from playwright.sync_api import Page from utils.deploy_utils import ( @@ -9,7 +11,10 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture("express_page_sidebar") +app_url = create_deploys_app_url_fixture( + # Possibly use a different app name given by an GHA env var + os.getenv("EXPRESS_PAGE_SIDEBAR_NAME", "express_page_sidebar") +) @skip_if_not_chrome From 14853e64504912a618ada48985b380cee15f4dd9 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:48:18 -0400 Subject: [PATCH 07/17] Rename variables for readibility --- tests/playwright/utils/deploy_utils.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/playwright/utils/deploy_utils.py b/tests/playwright/utils/deploy_utils.py index 95f7798ee..a5bed5d82 100644 --- a/tests/playwright/utils/deploy_utils.py +++ b/tests/playwright/utils/deploy_utils.py @@ -7,7 +7,7 @@ import sys import tempfile import time -from typing import Any, Callable, TypeVar +from typing import Any, Callable, List, TypeVar import pytest import requests @@ -30,12 +30,12 @@ server_url = os.environ.get("DEPLOY_CONNECT_SERVER_URL") api_key = os.environ.get("DEPLOY_CONNECT_SERVER_API_KEY") # shinyapps.io -name = os.environ.get("DEPLOY_SHINYAPPS_NAME") -token = os.environ.get("DEPLOY_SHINYAPPS_TOKEN") -secret = os.environ.get("DEPLOY_SHINYAPPS_SECRET") +shinyappsio_name = os.environ.get("DEPLOY_SHINYAPPS_NAME") +shinyappsio_token = os.environ.get("DEPLOY_SHINYAPPS_TOKEN") +shinyappsio_secret = os.environ.get("DEPLOY_SHINYAPPS_SECRET") +deploy_locations: List[str] = ["connect", "shinyapps"] -deploy_locations = ["connect", "shinyapps"] CallableT = TypeVar("CallableT", bound=Callable[..., Any]) @@ -105,9 +105,9 @@ def deploy_to_connect(app_name: str, app_dir: str) -> str: # TODO-future: Supress web browser from opening after deploying - https://github.com/rstudio/rsconnect-python/issues/462 def deploy_to_shinyapps(app_name: str, app_dir: str) -> str: # Deploy to shinyapps.io - shinyapps_deploy = f"rsconnect deploy shiny {app_dir} --account {name} --token {token} --secret {secret} --title {app_name} --verbose" + shinyapps_deploy = f"rsconnect deploy shiny {app_dir} --account {shinyappsio_name} --token {shinyappsio_token} --secret {shinyappsio_secret} --title {app_name} --verbose" run_command(shinyapps_deploy) - return f"https://{name}.shinyapps.io/{app_name}/" + return f"https://{shinyappsio_name}.shinyapps.io/{app_name}/" # Since connect parses python packages, we need to get latest version of shiny on HEAD @@ -185,6 +185,7 @@ def create_deploys_app_url_fixture( ): @pytest.fixture(scope=scope, params=[*deploy_locations, LOCAL_LOCATION]) def fix_fn(request: pytest.FixtureRequest): + app_file = os.path.join(os.path.dirname(request.path), "app.py") deploy_location = request.param From e74480dc22df5a64305570cb1e9bbfbc665b894c Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Wed, 28 Aug 2024 16:48:38 -0400 Subject: [PATCH 08/17] Skip connect or shinyappsio tests if envvars are missing --- tests/playwright/utils/deploy_utils.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/playwright/utils/deploy_utils.py b/tests/playwright/utils/deploy_utils.py index a5bed5d82..70cfea82a 100644 --- a/tests/playwright/utils/deploy_utils.py +++ b/tests/playwright/utils/deploy_utils.py @@ -194,6 +194,16 @@ def fix_fn(request: pytest.FixtureRequest): # Return the `url` yield next(shinyapp_proc_gen).url elif deploy_location in deploy_locations: + + if deploy_location == "connect" and not (server_url and api_key): + pytest.skip("Connect server url or api key not found. Cannot deploy.") + if deploy_location == "shinyapps" and not ( + shinyappsio_name and shinyappsio_token and shinyappsio_secret + ): + pytest.skip( + "Shinyapps.io name, token or secret not found. Cannot deploy." + ) + app_url = deploy_app( app_file, deploy_location, From d97778ef60a5adac4e6b79af8f631535a435c8ae Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 13:27:08 -0400 Subject: [PATCH 09/17] quote param in make command --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index de5e12251..7921200cc 100644 --- a/Makefile +++ b/Makefile @@ -173,7 +173,7 @@ playwright-shiny: FORCE # end-to-end tests on deployed apps with playwright; (SUB_FILE="" within tests/playwright/deploys/) playwright-deploys: FORCE - $(MAKE) playwright PYTEST_BROWSERS="$(PYTEST_DEPLOYS_BROWSERS)" $(TEST_FILE) + $(MAKE) playwright PYTEST_BROWSERS="$(PYTEST_DEPLOYS_BROWSERS)" TEST_FILE="$(TEST_FILE)" playwright-deploys-legacy: FORCE $(MAKE) playwright TEST_FILE="tests/playwright/deploys/$(SUB_FILE)" PYTEST_BROWSERS="$(PYTEST_DEPLOYS_BROWSERS)" From be83c4af2b70e2f2eb884df7328f842edf2cf2f5 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 13:27:33 -0400 Subject: [PATCH 10/17] Update deploy-tests.yaml --- .github/workflows/deploy-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index a8cd1291b..494819884 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -64,7 +64,7 @@ jobs: - name: Install pypi shiny and htmltools (uninstall GitHub versions) if: ${{ matrix.config.pypi_shiny }} run: | - uv pip uninstall -y shiny htmltools + uv pip uninstall shiny htmltools uv pip install shiny htmltools - name: Install rsconnect (PyPI) From f956b4dab360ad61db2b0e14a8d47c4030da1687 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 13:37:28 -0400 Subject: [PATCH 11/17] Update concurrency to listen to matrix config name --- .github/workflows/deploy-tests.yaml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index 494819884..4ed663252 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -9,8 +9,9 @@ jobs: playwright-deploys: # Only allow one `playwright-deploys` job to run at a time. (Independent of branch / PR) # Only one is allowed to run at a time because it is deploying to the same server location. - concurrency: playwright-deploys + concurrency: playwright-deploys-${{ matrix.config.name }} runs-on: ${{ matrix.os }} + name: ${{ matrix.config.name }} strategy: matrix: # Matches deploy server python version @@ -18,33 +19,37 @@ jobs: os: [ubuntu-latest] config: # Released server, shiny, and rsconnect - - released_connect_server: true + - name: "pypi-shiny-rsconnect-connect" + released_connect_server: true pypi_shiny: true pypi_rsconnect: true base_test_dir: "./tests/playwright/deploys/express-page_sidebar" - test_shinyappsio: false app_name: "pypi-shiny-rsconnect" + test_shinyappsio: false # Released shiny and rsconnect # Dev server - - released_connect_server: false + - name: "pypi-shiny-rsconnect-dogfood" + released_connect_server: false pypi_shiny: true pypi_rsconnect: true base_test_dir: "./tests/playwright/deploys/express-page_sidebar" - test_shinyappsio: false app_name: "pypi-shiny-rsconnect" + test_shinyappsio: false # Released shiny # Dogfood server and rsconnect - - released_connect_server: false + - name: "pypi-shiny-dev-rsconnect-dogfood" + released_connect_server: false pypi_shiny: true pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys/express-page_sidebar" - test_shinyappsio: false app_name: "pypi-shiny-dev-rsconnect" + test_shinyappsio: false # Dev server, shiny, and rsconnect - - released_connect_server: false + - name: "dev-shiny-rsconnect-dogfood" + released_connect_server: false pypi_shiny: false pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys" From dd0e0468890198c767d16e810959c747d62604d6 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 13:38:03 -0400 Subject: [PATCH 12/17] Rename method to convey it uses a local app only and the name provided is cosmetic for connect --- .../express-accordion/test_deploys_express_accordion.py | 4 ++-- .../express-dataframe/test_deploys_express_dataframe.py | 4 ++-- .../deploys/express-folium/test_deploys_express_folium.py | 4 ++-- .../express-page_default/test_deploys_express_page_default.py | 4 ++-- .../test_deploys_express_page_fillable.py | 4 ++-- .../express-page_fluid/test_deploys_express_page_fluid.py | 4 ++-- .../express-page_sidebar/test_deploys_express_page_sidebar.py | 4 ++-- tests/playwright/deploys/plotly/test_plotly_app.py | 4 ++-- .../shiny-client-console-error/test_shiny_client_error.py | 4 ++-- tests/playwright/utils/deploy_utils.py | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/playwright/deploys/express-accordion/test_deploys_express_accordion.py b/tests/playwright/deploys/express-accordion/test_deploys_express_accordion.py index 4160084d6..bf33a21c1 100644 --- a/tests/playwright/deploys/express-accordion/test_deploys_express_accordion.py +++ b/tests/playwright/deploys/express-accordion/test_deploys_express_accordion.py @@ -1,7 +1,7 @@ import pytest from playwright.sync_api import Page from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -9,7 +9,7 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture("shiny_express_accordion") +app_url = local_deploys_app_url_fixture("shiny_express_accordion") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-dataframe/test_deploys_express_dataframe.py b/tests/playwright/deploys/express-dataframe/test_deploys_express_dataframe.py index 46fdd4e45..d7415e9bb 100644 --- a/tests/playwright/deploys/express-dataframe/test_deploys_express_dataframe.py +++ b/tests/playwright/deploys/express-dataframe/test_deploys_express_dataframe.py @@ -1,7 +1,7 @@ import pytest from playwright.sync_api import Page from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -9,7 +9,7 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture("shiny-express-dataframe") +app_url = local_deploys_app_url_fixture("shiny-express-dataframe") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-folium/test_deploys_express_folium.py b/tests/playwright/deploys/express-folium/test_deploys_express_folium.py index 247fc0b89..19e95a3e1 100644 --- a/tests/playwright/deploys/express-folium/test_deploys_express_folium.py +++ b/tests/playwright/deploys/express-folium/test_deploys_express_folium.py @@ -1,13 +1,13 @@ import pytest from playwright.sync_api import Page, expect from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, ) -app_url = create_deploys_app_url_fixture("shiny-express-folium") +app_url = local_deploys_app_url_fixture("shiny-express-folium") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-page_default/test_deploys_express_page_default.py b/tests/playwright/deploys/express-page_default/test_deploys_express_page_default.py index 36fdfc2d0..eeb9663fd 100644 --- a/tests/playwright/deploys/express-page_default/test_deploys_express_page_default.py +++ b/tests/playwright/deploys/express-page_default/test_deploys_express_page_default.py @@ -1,7 +1,7 @@ import pytest from playwright.sync_api import Page, expect from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -11,7 +11,7 @@ TIMEOUT = 2 * 60 * 1000 -app_url = create_deploys_app_url_fixture("shiny_express_page_default") +app_url = local_deploys_app_url_fixture("shiny_express_page_default") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-page_fillable/test_deploys_express_page_fillable.py b/tests/playwright/deploys/express-page_fillable/test_deploys_express_page_fillable.py index c528f8723..295002bd1 100644 --- a/tests/playwright/deploys/express-page_fillable/test_deploys_express_page_fillable.py +++ b/tests/playwright/deploys/express-page_fillable/test_deploys_express_page_fillable.py @@ -1,7 +1,7 @@ import pytest from playwright.sync_api import Page from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -9,7 +9,7 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture("express_page_fillable") +app_url = local_deploys_app_url_fixture("express_page_fillable") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-page_fluid/test_deploys_express_page_fluid.py b/tests/playwright/deploys/express-page_fluid/test_deploys_express_page_fluid.py index 567e9da66..05c0e0d8f 100644 --- a/tests/playwright/deploys/express-page_fluid/test_deploys_express_page_fluid.py +++ b/tests/playwright/deploys/express-page_fluid/test_deploys_express_page_fluid.py @@ -1,7 +1,7 @@ import pytest from playwright.sync_api import Page from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -9,7 +9,7 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture("express_page_fluid") +app_url = local_deploys_app_url_fixture("express_page_fluid") @skip_if_not_chrome diff --git a/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py b/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py index c525a825e..2658512d0 100644 --- a/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py +++ b/tests/playwright/deploys/express-page_sidebar/test_deploys_express_page_sidebar.py @@ -3,7 +3,7 @@ import pytest from playwright.sync_api import Page from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, @@ -11,7 +11,7 @@ from shiny.playwright import controller -app_url = create_deploys_app_url_fixture( +app_url = local_deploys_app_url_fixture( # Possibly use a different app name given by an GHA env var os.getenv("EXPRESS_PAGE_SIDEBAR_NAME", "express_page_sidebar") ) diff --git a/tests/playwright/deploys/plotly/test_plotly_app.py b/tests/playwright/deploys/plotly/test_plotly_app.py index 52760c57c..7eb8489cc 100644 --- a/tests/playwright/deploys/plotly/test_plotly_app.py +++ b/tests/playwright/deploys/plotly/test_plotly_app.py @@ -1,14 +1,14 @@ import pytest from playwright.sync_api import Page, expect from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, ) TIMEOUT = 2 * 60 * 1000 -app_url = create_deploys_app_url_fixture("example_deploy_app_a1") +app_url = local_deploys_app_url_fixture("example_deploy_app_a1") @skip_if_not_chrome diff --git a/tests/playwright/deploys/shiny-client-console-error/test_shiny_client_error.py b/tests/playwright/deploys/shiny-client-console-error/test_shiny_client_error.py index be697f413..d9f62b622 100644 --- a/tests/playwright/deploys/shiny-client-console-error/test_shiny_client_error.py +++ b/tests/playwright/deploys/shiny-client-console-error/test_shiny_client_error.py @@ -1,13 +1,13 @@ import pytest from playwright.sync_api import Page, expect from utils.deploy_utils import ( - create_deploys_app_url_fixture, + local_deploys_app_url_fixture, reruns, reruns_delay, skip_if_not_chrome, ) -app_url = create_deploys_app_url_fixture("shiny_client_console_error") +app_url = local_deploys_app_url_fixture("shiny_client_console_error") @skip_if_not_chrome diff --git a/tests/playwright/utils/deploy_utils.py b/tests/playwright/utils/deploy_utils.py index 70cfea82a..d60278f76 100644 --- a/tests/playwright/utils/deploy_utils.py +++ b/tests/playwright/utils/deploy_utils.py @@ -22,7 +22,7 @@ LOCAL_LOCATION = "local" __all__ = ( - "create_deploys_app_url_fixture", + "local_deploys_app_url_fixture", "skip_if_not_chrome", ) @@ -179,7 +179,7 @@ def deploy_app( return url -def create_deploys_app_url_fixture( +def local_deploys_app_url_fixture( app_name: str, scope: ScopeName = "module", ): From a06fd0a0e9de4592cc0f041921dfacbbc746afbf Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 14:22:27 -0400 Subject: [PATCH 13/17] Be sure to use pypi requirements when appropriate --- .github/workflows/deploy-tests.yaml | 1 + tests/playwright/utils/deploy_utils.py | 44 ++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index 4ed663252..d4f291e89 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -97,6 +97,7 @@ jobs: DEPLOY_SHINYAPPS_TOKEN: "${{ matrix.config.test_shinyappsio && matrix.config.shinyapps_token }}" DEPLOY_SHINYAPPS_SECRET: "${{ matrix.config.test_shinyappsio && matrix.config.shinyapps_secret }}" EXPRESS_PAGE_SIDEBAR_NAME: "${{ matrix.config.app_name }}" + DEPLOY_GITHUB_REQUIREMENTS_TXT: "${{ !matrix.config.pypi_shiny }}" timeout-minutes: 30 # Given we are waiting for external servers to finish, # we can have many local processes waiting for deployment to finish diff --git a/tests/playwright/utils/deploy_utils.py b/tests/playwright/utils/deploy_utils.py index d60278f76..d7280e8c2 100644 --- a/tests/playwright/utils/deploy_utils.py +++ b/tests/playwright/utils/deploy_utils.py @@ -7,6 +7,7 @@ import sys import tempfile import time +import warnings from typing import Any, Callable, List, TypeVar import pytest @@ -34,6 +35,14 @@ shinyappsio_token = os.environ.get("DEPLOY_SHINYAPPS_TOKEN") shinyappsio_secret = os.environ.get("DEPLOY_SHINYAPPS_SECRET") +run_on_ci = os.environ.get("CI", "False") == "true" +repo = os.environ.get("GITHUB_REPOSITORY", "unknown") + +should_use_github_requirements_txt = ( + os.environ.get("DEPLOY_GITHUB_REQUIREMENTS_TXT", "true").lower() == "true" +) + + deploy_locations: List[str] = ["connect", "shinyapps"] @@ -89,6 +98,7 @@ def deploy_to_connect(app_name: str, app_dir: str) -> str: output = run_command(connect_server_lookup_command) url = json.loads(output)[0]["content_url"] app_id = json.loads(output)[0]["guid"] + # change visibility of app to public connect_app_url = f"{server_url}/__api__/v1/content/{app_id}" payload = '{"access_type":"all"}' @@ -98,7 +108,16 @@ def deploy_to_connect(app_name: str, app_dir: str) -> str: } response = requests.request("PATCH", connect_app_url, headers=headers, data=payload) if response.status_code != 200: - raise RuntimeError("Failed to change visibility of app.") + warnings.warn( + f"Failed to change visibility of app. {response.text}", + RuntimeWarning, + stacklevel=1, + ) + pytest.skip( + "Skipping test as deployed app is not visible to public. Test is kept as it does confirm the app deployment has succeeded." + ) + return + return url @@ -111,7 +130,8 @@ def deploy_to_shinyapps(app_name: str, app_dir: str) -> str: # Since connect parses python packages, we need to get latest version of shiny on HEAD -def write_requirements_txt(app_dir: str) -> None: +def write_github_requirements_txt(app_dir: str) -> None: + print("Writing github requirements.txt") app_requirements_file_path = os.path.join(app_dir, "app_requirements.txt") requirements_file_path = os.path.join(app_dir, "requirements.txt") git_cmd = subprocess.run(["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE) @@ -123,6 +143,18 @@ def write_requirements_txt(app_dir: str) -> None: f.write(f"git+https://github.com/posit-dev/py-shiny.git@{git_hash}\n") +def write_pypi_requirements_txt(app_dir: str) -> None: + print("Writing pypi requirements.txt") + app_requirements_file_path = os.path.join(app_dir, "app_requirements.txt") + requirements_file_path = os.path.join(app_dir, "requirements.txt") + + with open(app_requirements_file_path) as f: + requirements = f.read() + with open(requirements_file_path, "w") as f: + f.write(f"{requirements}\n") + f.write("shiny\n") + + def assert_rsconnect_file_updated(file_path: str, min_mtime: float) -> None: """ Asserts that the specified file has been updated since `min_mtime` (seconds since epoch). @@ -143,9 +175,6 @@ def deploy_app( if not should_deploy_apps: pytest.skip("`DEPLOY_APPS` does not equal `true`") - run_on_ci = os.environ.get("CI", "False") == "true" - repo = os.environ.get("GITHUB_REPOSITORY", "unknown") - if not (run_on_ci and repo == "posit-dev/py-shiny"): pytest.skip("Not on CI and within posit-dev/py-shiny repo") @@ -162,7 +191,10 @@ def deploy_app( tmp_app_dir = os.path.join(tmpdir, app_dir_name) os.mkdir(tmp_app_dir) shutil.copytree(app_dir, tmp_app_dir, dirs_exist_ok=True) - write_requirements_txt(tmp_app_dir) + if should_use_github_requirements_txt: + write_github_requirements_txt(tmp_app_dir) + else: + write_pypi_requirements_txt(tmp_app_dir) deployment_function = { "connect": deploy_to_connect, From a5813ff78b2645114a1c1d586eccc525459fcae0 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 14:38:32 -0400 Subject: [PATCH 14/17] Update deploy_utils.py --- tests/playwright/utils/deploy_utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/playwright/utils/deploy_utils.py b/tests/playwright/utils/deploy_utils.py index d7280e8c2..53501624b 100644 --- a/tests/playwright/utils/deploy_utils.py +++ b/tests/playwright/utils/deploy_utils.py @@ -229,8 +229,11 @@ def fix_fn(request: pytest.FixtureRequest): if deploy_location == "connect" and not (server_url and api_key): pytest.skip("Connect server url or api key not found. Cannot deploy.") - if deploy_location == "shinyapps" and not ( - shinyappsio_name and shinyappsio_token and shinyappsio_secret + if ( + deploy_location == "shinyapps" + and shinyappsio_name + and shinyappsio_token + and shinyappsio_secret ): pytest.skip( "Shinyapps.io name, token or secret not found. Cannot deploy." From e6640496e1cbd4526a7f2ac0b17997059fd29053 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 16:06:17 -0400 Subject: [PATCH 15/17] Deploy one more app that uses a github install of the v1 release of shiny --- .github/workflows/deploy-tests.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index d4f291e89..f69c20cfa 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -47,6 +47,17 @@ jobs: app_name: "pypi-shiny-dev-rsconnect" test_shinyappsio: false + # Released shiny + # Dogfood server and rsconnect + - name: "github-shiny-dev-rsconnect-dogfood" + released_connect_server: false + github_shiny: true + pypi_shiny: false + pypi_rsconnect: false + base_test_dir: "./tests/playwright/deploys/express-page_sidebar" + app_name: "pypi-shiny-dev-rsconnect" + test_shinyappsio: false + # Dev server, shiny, and rsconnect - name: "dev-shiny-rsconnect-dogfood" released_connect_server: false @@ -61,6 +72,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + ref: ${{ (matrix.config.github_shiny && 'v1.0.0') || '' }} - name: Setup py-shiny uses: ./.github/py-shiny/setup with: From e5a94cb25d48042f00beb89d7cbe7c696508de92 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 16:19:54 -0400 Subject: [PATCH 16/17] Be sure to install the github version via pip, not actions/checkout --- .github/workflows/deploy-tests.yaml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index f69c20cfa..775e00094 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -37,11 +37,12 @@ jobs: app_name: "pypi-shiny-rsconnect" test_shinyappsio: false - # Released shiny + # GitHub shiny v1.0.0 - test if github packages can be installed # Dogfood server and rsconnect - - name: "pypi-shiny-dev-rsconnect-dogfood" + - name: "github-shiny-dev-rsconnect-dogfood" released_connect_server: false - pypi_shiny: true + github_shiny: true + pypi_shiny: false pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys/express-page_sidebar" app_name: "pypi-shiny-dev-rsconnect" @@ -49,10 +50,9 @@ jobs: # Released shiny # Dogfood server and rsconnect - - name: "github-shiny-dev-rsconnect-dogfood" + - name: "pypi-shiny-dev-rsconnect-dogfood" released_connect_server: false - github_shiny: true - pypi_shiny: false + pypi_shiny: true pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys/express-page_sidebar" app_name: "pypi-shiny-dev-rsconnect" @@ -72,7 +72,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - ref: ${{ (matrix.config.github_shiny && 'v1.0.0') || '' }} - name: Setup py-shiny uses: ./.github/py-shiny/setup with: @@ -84,6 +83,12 @@ jobs: uv pip uninstall shiny htmltools uv pip install shiny htmltools + - name: Install GitHub shiny@v1.0.0 and htmltools@v0.5.3 (uninstall PyPI versions) + if: ${{ matrix.config.github_shiny }} + run: | + uv pip uninstall shiny htmltools + uv pip install "htmltools @ git+https://github.com/posit-dev/py-htmltools.git@v0.5.3" "shiny @ git+https://github.com/posit-dev/py-shiny.git@v1.0.0" + - name: Install rsconnect (PyPI) if: ${{ matrix.config.pypi_rsconnect }} run: | From 6af49088930f64c5de025a1898b1706cf764a7a0 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 29 Aug 2024 16:26:45 -0400 Subject: [PATCH 17/17] Swap two jobs --- .github/workflows/deploy-tests.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-tests.yaml b/.github/workflows/deploy-tests.yaml index 775e00094..67da5add2 100644 --- a/.github/workflows/deploy-tests.yaml +++ b/.github/workflows/deploy-tests.yaml @@ -37,22 +37,22 @@ jobs: app_name: "pypi-shiny-rsconnect" test_shinyappsio: false - # GitHub shiny v1.0.0 - test if github packages can be installed + # Released shiny # Dogfood server and rsconnect - - name: "github-shiny-dev-rsconnect-dogfood" + - name: "pypi-shiny-dev-rsconnect-dogfood" released_connect_server: false - github_shiny: true - pypi_shiny: false + pypi_shiny: true pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys/express-page_sidebar" app_name: "pypi-shiny-dev-rsconnect" test_shinyappsio: false - # Released shiny + # GitHub shiny v1.0.0 - test if github packages can be installed # Dogfood server and rsconnect - - name: "pypi-shiny-dev-rsconnect-dogfood" + - name: "github-shiny-dev-rsconnect-dogfood" released_connect_server: false - pypi_shiny: true + github_shiny: true + pypi_shiny: false pypi_rsconnect: false base_test_dir: "./tests/playwright/deploys/express-page_sidebar" app_name: "pypi-shiny-dev-rsconnect"