# Name of your workflow.
name: iOS Integration Tests
on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
# A workflow run is made up of one or more jobs.
jobs:
  # id of job, a string that is unique to the "jobs" node above.
  ios_integration_tests:
    # Creates a build matrix for your jobs. You can define different
    # variations of an environment to run each job in.
    strategy:
      # A set of different configurations of the virtual
      # environment.
      # matrix:
      # When set to true, GitHub cancels all in-progress jobs if any
      # matrix job fails.
      fail-fast: false
    # The type of machine to run the job on.
    runs-on: macOS-latest
    timeout-minutes: 60
    # Contains a sequence of tasks.
    steps:
      # A name for your step to display on GitHub.
      - name: "Start Simulator"
        run: |
          xcrun simctl list
          xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-12 com.apple.CoreSimulator.SimRuntime.iOS-14-3 | xargs xcrun simctl boot
      # The branch or tag ref that triggered the workflow will be
      # checked out.
      # https://github.com/actions/checkout
      - uses: actions/checkout@v2
      # Sets up cache
      - name: Cache multiple paths
        uses: actions/cache@v2
        with:
          path: |
            ~/.pub-cache
            ~/.npm
          key: ${{ runner.os }}-pub-and-npm-cache
      # Sets up a flutter environment.
      # https://github.com/marketplace/actions/flutter-action
      - name: "Install Flutter"
        uses: subosito/flutter-action@v1.4.0
        with:
          channel: 'dev' # 'stable' or 'dev' or 'beta'
      - name: "Change Flutter channel to master"
        run: |
          flutter channel master
          flutter upgrade
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: "Install npm dependencies"
        run: |
          cd ./nodejs_server_test_auth_basic_and_ssl
          npm install
          cd ..
      - name: "Run iOS Flutter Integration Test"
        run: |
          flutter pub get
          flutter devices
          ./scripts/test.sh $(ipconfig getifaddr en0)