name: Playwright UI Tests on: push: branches: - "main" # paths: # - "web/**" pull_request: branches: - "*" # paths: # - "web/**" env: COLUMNS: 150 ZO_ROOT_USER_EMAIL: root@example.com ZO_ROOT_USER_PASSWORD: Complexpass#123 ZO_BASE_URL: http://localhost:5080 INGESTION_URL: http://localhost:5080 ORGNAME: default ZO_QUICK_MODE_NUM_FIELDS: 5 ZO_QUICK_MODE_STRATEGY : first ZO_ALLOW_USER_DEFINED_SCHEMAS: true ZO_INGEST_ALLOWED_UPTO: 5 ZO_FEATURE_QUERY_EXCLUDE_ALL: false ZO_USAGE_BATCH_SIZE: 200 ZO_USAGE_PUBLISH_INTERVAL: 2 ZO_USAGE_REPORTING_ENABLED: true jobs: build_binary: name: build_binary runs-on: labels: ubicloud-standard-8 steps: - name: Remove unused tools run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf "/usr/local/share/boost" sudo rm -rf "$AGENT_TOOLSDIRECTORY" - name: Clone the current repo uses: actions/checkout@v4 - name: Setup Rust Toolchain uses: dtolnay/rust-toolchain@master with: toolchain: nightly-2024-07-07 targets: x86_64-unknown-linux-gnu - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install Protoc uses: arduino/setup-protoc@v3 with: version: "21.12" - uses: actions/setup-node@v4 with: node-version: 18 - name: Build frontend code run: cd web && npm install && npm run build - name: Build and run binary run: cargo build --release --target x86_64-unknown-linux-gnu - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: debug-binary path: target/x86_64-unknown-linux-gnu/release/openobserve retention-days: 1 ui_integration_tests: name: playwright_ui_integration_tests needs: [build_binary] runs-on: labels: ubuntu-latest container: image: mcr.microsoft.com/playwright:v1.42.1-jammy options: --user root strategy: matrix: browser: [chrome] testfilename: ["sanity.spec.js", "alerts.spec.js", "schema.spec.js", "logspage.spec.js", "logsqueries.spec.js", "logsquickmode.spec.js", "multiselect-stream.spec.js", "pipeline.spec.js", "dashboardtype.spec.js", "dashboard.spec.js", "visualize.spec.js", "unflattened.spec.js","secondsPrecisionAdded.spec.js"] steps: - name: Clone the current repo uses: actions/checkout@v4 - name: Download artifacts uses: actions/download-artifact@v4 - name: Display structure of downloaded files run: ls -la . - name: Start OpenObserve run: chmod +x ./debug-binary/openobserve && ./debug-binary/openobserve > o2.log 2>&1 & - name: Wait for start run: sleep 15 - name: Ensure we are getting a reply from the server run: curl http://localhost:5080/web/login - uses: actions/setup-node@v4 with: node-version: lts/* - name: Install dependencies and run ui-tests run: | touch .env echo "ZO_ROOT_USER_EMAIL=${ZO_ROOT_USER_EMAIL}" >> .env echo "ZO_ROOT_USER_PASSWORD=${ZO_ROOT_USER_PASSWORD}" >> .env echo "ZO_BASE_URL=${ZO_BASE_URL}" >> .env echo "INGESTION_URL=${INGESTION_URL}" >> .env echo "ORGNAME=${ORGNAME}" >> .env mv .env tests/ui-testing cd tests/ui-testing && npm ci && npx playwright test ./playwright-tests/${{ matrix.testfilename }} # - name: Check OpenObserve logs # if: always() # run: cat o2.log - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: playwright-report/ retention-days: 30