import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; void main() { group('CI Environment Tests', () { test('should detect GitHub Actions environment', () { final isGitHubActions = Platform.environment['GITHUB_ACTIONS'] == 'true'; final isCI = Platform.environment['CI'] == 'true'; final runnerOS = Platform.environment['RUNNER_OS']; print('Environment Variables:'); print(' GITHUB_ACTIONS: ${Platform.environment['GITHUB_ACTIONS']}'); print(' CI: ${Platform.environment['CI']}'); print(' RUNNER_OS: $runnerOS'); print(' Platform: ${Platform.operatingSystem}'); if (isGitHubActions || isCI) { print('Running in CI/GitHub Actions environment'); expect(isCI, isTrue, reason: 'CI environment variable should be set'); if (isGitHubActions) { expect(runnerOS, isNotNull, reason: 'RUNNER_OS should be set in GitHub Actions'); print(' GitHub Actions Runner OS: $runnerOS'); } } else { print('Running in local development environment'); } // Test should always pass regardless of environment expect(Platform.operatingSystem, isNotEmpty); }); test('should have correct Dart/Flutter environment in CI', () { final dartVersion = Platform.version; print('Dart version: $dartVersion'); // In CI, we should have Dart available expect(dartVersion, isNotEmpty); expect(dartVersion, contains('Dart')); // Check if running in CI and validate expected environment final isCI = Platform.environment['CI'] == 'true'; if (isCI) { print('Dart environment validated in CI'); // CI should have these basic characteristics expect(Platform.operatingSystem, anyOf('linux', 'macos', 'windows')); // GitHub Actions typically runs on Linux final runnerOS = Platform.environment['RUNNER_OS']; if (runnerOS == 'Linux') { expect(Platform.operatingSystem, 'linux'); } } }); test('should handle network connectivity gracefully', () async { // Simple network test that won't fail in restricted environments try { // Test with a reliable endpoint final socket = await Socket.connect('8.8.8.8', 53, timeout: const Duration(seconds: 5)); socket.destroy(); print('Network connectivity available'); } catch (e) { print('Limited network connectivity: $e'); // Don't fail the test - some CI environments have restricted network } // Test should always pass expect(true, isTrue); }); test('should validate test infrastructure', () { // Basic test framework validation expect(testWidgets, isNotNull, reason: 'Flutter test framework should be available'); expect(setUp, isNotNull, reason: 'Test setup functions should be available'); expect(tearDown, isNotNull, reason: 'Test teardown functions should be available'); print('Test infrastructure validated'); }); }); }