Skip to content

Workflow Input Triggers

In this documentation, we'll explore the "Workflow Input Triggers" GitHub Actions workflow. This workflow allows you to manually trigger its execution and provides input parameters to customize its behavior.

Workflow Trigger

The workflow is triggered manually using the "workflow_dispatch" event, which allows users to input specific parameters when starting the workflow execution.

Workflow Inputs

The following inputs can be provided when triggering this workflow:

  • node-version: Specifies the Node.js version to use. It is optional and defaults to '14.x' if not provided.
  • npm-install-command: Specifies the npm install command. This input is required.
  • run-playwright: A boolean flag indicating whether Playwright testing should be enabled. It is optional and defaults to true.
  • upload-artifact: A boolean flag indicating whether artifact upload should be enabled. It is optional and defaults to true.

Workflow Execution

To manually trigger this workflow and customize its behavior, you can use the GitHub Actions interface:

  1. Navigate to your repository on GitHub.

  2. Click on the "Actions" tab.

  3. In the left sidebar, you will see the name of the workflow: "Workflow Input Triggers." Click on it.

  4. Click the "Run workflow" button.

  5. Customize the workflow by providing input values:

    • Set the node-version input if you want to use a specific Node.js version.
    • Specify the required npm-install-command.
    • Toggle the run-playwright and upload-artifact options as needed.
  6. Click the "Run workflow" button to start the workflow with your custom inputs.

Workflow Steps

The workflow consists of the following steps:

  1. Checkout Code:

    • Action: actions/checkout@v3
    • Description: This step checks out the repository code.
  2. Setup Node.js:

    • Action: actions/setup-node@v3
    • Description: Sets up the Node.js environment based on the specified node-version input or the default '14.x'.
  3. Install Dependencies:

    • Action: Runs the npm command specified in the npm-install-command input, which is required for building the application.
  4. Install Playwright Browsers:

    • Action: npx playwright install --with-deps
    • Description: Installs Playwright browsers, but only if the run-playwright input is set to true.
  5. Run Playwright Tests:

    • Action: npx playwright test
    • Description: Runs Playwright tests, but only if run-playwright is set to true. It also sets environment variables USERNAME and PASSWORD using the configured secrets.
  6. Upload Artifact:

    • Action: actions/upload-artifact@v3
    • Description: Uploads the 'playwright-report/' directory as an artifact, but only if the upload-artifact input is set to true. The artifact will be retained for 30 days.

full yaml file

yaml
name: workflow input triggers

on:
  workflow_dispatch:
    inputs:
      node-version:
        description: 'Node.js version'
        required: false
        default: '14.x' # Default Node.js version if not provided
      npm-install-command:
        description: 'npm install command'
        required: true
      run-playwright:
        description: 'Enable Playwright testing'
        required: false
        default: 'true' # Enable Playwright testing by default
      upload-artifact:
        description: 'Enable artifact upload'
        required: false
        default: 'true' # Enable artifact upload by default

jobs:
  run-workflow-triggers:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout Code
      uses: actions/checkout@v3

    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: ${{ inputs.node-version }}

    - name: Install Dependencies
      run: npm ${{ inputs.npm-install-command }}

    - name: Install Playwright Browsers
      if: ${{ inputs.run-playwright == 'true' }}
      run: npx playwright install --with-deps

    - name: Run Playwright Tests
      if: ${{ inputs.run-playwright == 'true' }}
      run: npx playwright test

    - name: Upload Artifact
      if: ${{ inputs.upload-artifact == 'true' }}
      uses: actions/upload-artifact@v3
      with:
        name: playwright-report
        path: playwright-report/