// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

import 'package:integration_test_example/main.dart' as app;

/// This file is placed in `test_driver/` instead of `integration_test/`, so
/// that the CI tooling of flutter/plugins only uses this together with
/// `failure_test.dart` as the driver. It is only used for testing of
/// `package:integration_test` – do not follow the conventions here if you are a
/// user of `package:integration_test`.

// Tests the failure behavior of the IntegrationTestWidgetsFlutterBinding
//
// This test fails intentionally! It should be run using a test runner that
// expects failure.
void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();

  testWidgets('success', (WidgetTester tester) async {
    expect(1 + 1, 2); // This should pass
  });

  testWidgets('failure 1', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    app.main();

    // Verify that platform version is retrieved.
    await expectLater(
      find.byWidgetPredicate(
        (Widget widget) =>
            widget is Text && widget.data.startsWith('This should fail'),
      ),
      findsOneWidget,
    );
  });

  testWidgets('failure 2', (WidgetTester tester) async {
    expect(1 + 1, 3); // This should fail
  });
}
