Set a MockSession context for the initial execution of express code #3066
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run tests | |
on: | |
workflow_dispatch: | |
push: | |
branches: ["main", "rc-*"] | |
pull_request: | |
release: | |
types: [published] | |
schedule: | |
- cron: "0 8 * * *" | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
# "3.10" must be a string; otherwise it is interpreted as 3.1. | |
python-version: ["3.11", "3.10", "3.9", "3.8"] | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup py-shiny | |
id: install | |
uses: ./.github/py-shiny/setup | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run unit tests | |
if: steps.install.outcome == 'success' && (success() || failure()) | |
run: | | |
make test | |
- name: Type check with pyright | |
if: steps.install.outcome == 'success' && (success() || failure()) | |
run: | | |
make pyright | |
- name: Lint with flake8 | |
if: steps.install.outcome == 'success' && (success() || failure()) | |
run: | | |
make lint | |
- name: black and isort | |
if: steps.install.outcome == 'success' && (success() || failure()) | |
run: | | |
make check | |
playwright-shiny: | |
runs-on: ${{ matrix.os }} | |
if: github.event_name != 'release' | |
strategy: | |
matrix: | |
python-version: ["3.11", "3.10", "3.9", "3.8"] | |
os: [ubuntu-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup py-shiny | |
uses: ./.github/py-shiny/setup | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run End-to-End tests | |
timeout-minutes: 20 | |
run: | | |
make playwright-shiny | |
playwright-examples: | |
runs-on: ${{ matrix.os }} | |
if: github.event_name != 'release' | |
strategy: | |
matrix: | |
python-version: ["3.11", "3.10", "3.9", "3.8"] | |
os: [ubuntu-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup py-shiny | |
uses: ./.github/py-shiny/setup | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18" | |
cache: npm | |
cache-dependency-path: examples/brownian/shinymediapipe/package-lock.json | |
- name: Install node.js package | |
working-directory: examples/brownian/shinymediapipe | |
run: | | |
npm ci | |
- name: Run example app tests | |
timeout-minutes: 20 | |
run: | | |
make playwright-examples | |
playwright-deploys: | |
# Only allow one `playwright-deploys` job to run at a time. (Independent of branch / PR) | |
concurrency: playwright-deploys | |
runs-on: ${{ matrix.os }} | |
if: ${{ github.event_name == 'push' || (github.event_name == 'pull_request' && startsWith(github.head_ref, 'deploy')) }} | |
strategy: | |
matrix: | |
python-version: ["3.10"] | |
os: [ubuntu-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup py-shiny | |
uses: ./.github/py-shiny/setup | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run tests for deploys | |
env: | |
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 }}" | |
timeout-minutes: 30 | |
run: | | |
make playwright-deploys | |
pypi: | |
name: "Deploy to PyPI" | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Set up Python 3.10" | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install https://github.com/rstudio/py-htmltools/tarball/main | |
make install-deps | |
make install | |
- name: "Build Package" | |
run: | | |
make dist | |
# test deploy ---- | |
- name: "Test Deploy to PyPI" | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
if: startsWith(github.event.release.name, 'TEST') | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_TEST_API_TOKEN }} | |
repository_url: https://test.pypi.org/legacy/ | |
## prod deploy ---- | |
- name: "Deploy to PyPI" | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
if: startsWith(github.event.release.name, 'shiny') | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
testrail-reporting-nightly: | |
runs-on: ${{ matrix.os }} | |
if: ${{ github.event_name == 'schedule' || (github.event_name == 'pull_request' && startsWith(github.head_ref, 'testrail')) }} | |
strategy: | |
matrix: | |
python-version: | |
- "3.11" | |
- "3.10" | |
- "3.9" | |
# - "3.8" # Testrail has errors when running on python 3.8; Skipping | |
os: [ubuntu-latest] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup py-shiny | |
uses: ./.github/py-shiny/setup | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "18" | |
cache: npm | |
cache-dependency-path: examples/brownian/shinymediapipe/package-lock.json | |
- name: Install node.js package | |
working-directory: examples/brownian/shinymediapipe | |
run: | | |
npm ci | |
- name: Run End-to-End tests | |
timeout-minutes: 20 | |
run: | | |
make testrail-junit | |
- name: Report results to Testrail | |
env: | |
TESTRAIL_URL: "https://posit.testrail.io" | |
TESTRAIL_PROJECT: "Shiny-Python" | |
TESTRAIL_USER: "${{ secrets.TESTRAIL_USER }}" | |
TESTRAIL_PASSWORD: "${{ secrets.TESTRAIL_PASSWORD }}" | |
run: | | |
CURRENT_DATE="$(date +'%Y-%m-%d %H:%M:%S') Nightly tests" | |
trcli \ | |
--yes \ | |
--host "$TESTRAIL_URL" \ | |
--project "$TESTRAIL_PROJECT" \ | |
--username "$TESTRAIL_USER" \ | |
--password "$TESTRAIL_PASSWORD" \ | |
parse_junit \ | |
--file "report.xml" \ | |
--title "$CURRENT_DATE" \ | |
--close-run |