name: integration-test on: pull_request_review: types: [submitted] permissions: contents: read jobs: build: if: github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'main' runs-on: ubuntu-latest # Specify python/node versions to test against strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11"] node-version: ["15.x"] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} # Clone Pynecone Website Repo For integration tests - name: Clone Pynecone Website Repo uses: actions/checkout@v3 with: repository: pynecone-io/pynecone-examples path: pynecone-examples # Install poetry - name: cache poetry install uses: actions/cache@v2 with: path: ~/.local key: python-${{ matrix.python-version }}-poetry-1.3.1 - uses: snok/install-poetry@v1 with: version: 1.3.1 virtualenvs-create: true virtualenvs-in-project: true - name: cache deps id: cache-deps uses: actions/cache@v2 with: path: .venv key: python-${{ matrix.python-version }}-pydeps-${{ hashFiles('**/poetry.lock') }} - name: Poetry Install run: poetry install --no-interaction --no-root if: steps.cache-deps.outputs.cache-hit != 'true' - name: Install Requirements working-directory: ./pynecone-examples/counter run: poetry run pip install -r requirements.txt - name: Init Website working-directory: ./pynecone-examples/counter run: poetry run pc init - name: Run Website and check for errors working-directory: ./pynecone-examples/counter run: | curl -fsSL https://bun.sh/install | bash -s -- bun-v0.5.5 timeout 2m poetry run pc run & sleep 10 URL="127.0.0.1:3000" # make the curl request and save the response and HTTP status code RESPONSE=$(curl -s -w "\n%{http_code}" $URL) # extract the HTTP status code from the response HTTP_STATUS=$(echo "$RESPONSE" | tail -n1) # check for errors based on the HTTP status code if [[ $HTTP_STATUS -ge 400 ]]; then echo "Error: HTTP status code $HTTP_STATUS" exit 1 fi echo "success with HTTP STATUS: $HTTP_STATUS"