diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 2df1901917..08af1b8336 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -184,7 +184,7 @@ jobs: - uses: actions/checkout@v3 - name: ktlint - uses: ScaCap/action-ktlint@0169eb4232c76b235d26d94e92111c32aee7660e # pin@1.5.1 + uses: ScaCap/action-ktlint@2cf245b99bc91f73bc4c96a3d9d57bb5da3533ae # pin@1.7.1 with: github_token: ${{ secrets.github_token }} reporter: github-pr-review diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index c5a4d0a756..86287d14ed 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -56,3 +56,20 @@ jobs: cd min_version_test flutter pub get flutter build ios --no-codesign + + build-web: + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v3 + + - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + with: + flutter-version: '3.0.0' + + - name: Build web + run: | + cd min_version_test + flutter pub get + flutter build web --source-maps diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index b3124aac96..55199c83d4 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -50,3 +50,4 @@ sentry: wait_for_processing: true commits: true ignore_missing: true + log_level: info diff --git a/min_version_test/lib/main.dart b/min_version_test/lib/main.dart index 98c440374e..72a8aea404 100644 --- a/min_version_test/lib/main.dart +++ b/min_version_test/lib/main.dart @@ -1,12 +1,9 @@ import 'package:flutter/material.dart'; -import 'dart:io' if (dart.library.html) 'dart:html'; - -import 'package:logging/logging.dart'; -import 'package:dio/dio.dart'; - +import 'package:min_version_test/transaction/transaction_locator.dart' + if (dart.library.html) 'package:min_version_test/transaction/file_transaction.dart' + if (dart.library.io) 'package:min_version_test/transaction/web_transaction.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:sentry_dio/sentry_dio.dart'; import 'package:sentry_logging/sentry_logging.dart'; // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io @@ -94,11 +91,8 @@ class _MyHomePageState extends State { Future _incrementCounter() async { setState(() async { - final transaction = Sentry.startTransaction( - 'incrementCounter', - 'task', - bindToScope: true, - ); + final transactionTest = getTransaction(); + await transactionTest.start(); // This call to setState tells the Flutter framework that something has // changed in this State, which causes it to rerun the build method below @@ -106,21 +100,6 @@ class _MyHomePageState extends State { // _counter without calling setState(), then the build method would not be // called again, and so nothing would appear to happen. _counter++; - - final dio = Dio(); - dio.addSentry(); - final log = Logger('_MyHomePageState'); - - try { - final file = File('response.txt'); - final response = await dio.get('https://flutter.dev/'); - await file.writeAsString(response.data ?? 'no response'); - - await transaction.finish(status: SpanStatus.ok()); - } catch (exception, stackTrace) { - log.info(exception.toString(), exception, stackTrace); - await transaction.finish(status: SpanStatus.internalError()); - } }); } diff --git a/min_version_test/lib/transaction/file_transaction.dart b/min_version_test/lib/transaction/file_transaction.dart new file mode 100644 index 0000000000..6f85ddc337 --- /dev/null +++ b/min_version_test/lib/transaction/file_transaction.dart @@ -0,0 +1,36 @@ +import 'package:min_version_test/transaction/transaction.dart'; +import 'dart:io'; + +import 'package:logging/logging.dart'; +import 'package:dio/dio.dart'; + +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_dio/sentry_dio.dart'; + +class FileTransaction implements Transaction { + @override + Future start() async { + final transaction = Sentry.startTransaction( + 'incrementCounter', + 'task', + bindToScope: true, + ); + + final dio = Dio(); + dio.addSentry(); + final log = Logger('_MyHomePageState'); + + try { + final file = File('response.txt'); + final response = await dio.get('https://flutter.dev/'); + await file.writeAsString(response.data ?? 'no response'); + + await transaction.finish(status: SpanStatus.ok()); + } catch (exception, stackTrace) { + log.info(exception.toString(), exception, stackTrace); + await transaction.finish(status: SpanStatus.internalError()); + } + } +} + +Transaction getTransaction() => FileTransaction(); diff --git a/min_version_test/lib/transaction/transaction.dart b/min_version_test/lib/transaction/transaction.dart new file mode 100644 index 0000000000..578354dbf4 --- /dev/null +++ b/min_version_test/lib/transaction/transaction.dart @@ -0,0 +1,5 @@ +class Transaction { + Future start() async { + // Do nothing... + } +} diff --git a/min_version_test/lib/transaction/transaction_locator.dart b/min_version_test/lib/transaction/transaction_locator.dart new file mode 100644 index 0000000000..7e3a3f75d5 --- /dev/null +++ b/min_version_test/lib/transaction/transaction_locator.dart @@ -0,0 +1,4 @@ +import 'package:min_version_test/transaction/transaction.dart'; + +Transaction getTransaction() => + throw UnsupportedError('Cannot create sample transaction.'); diff --git a/min_version_test/lib/transaction/web_transaction.dart b/min_version_test/lib/transaction/web_transaction.dart new file mode 100644 index 0000000000..99ce8f3508 --- /dev/null +++ b/min_version_test/lib/transaction/web_transaction.dart @@ -0,0 +1,34 @@ +import 'package:min_version_test/transaction/transaction.dart'; + +import 'package:logging/logging.dart'; +import 'package:dio/dio.dart'; + +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_dio/sentry_dio.dart'; + +class WebTransaction implements Transaction { + @override + Future start() async { + final transaction = Sentry.startTransaction( + 'incrementCounter', + 'task', + bindToScope: true, + ); + + final dio = Dio(); + dio.addSentry(); + final log = Logger('_MyHomePageState'); + + try { + final response = await dio.get('https://flutter.dev/'); + print(response); + + await transaction.finish(status: SpanStatus.ok()); + } catch (exception, stackTrace) { + log.info(exception.toString(), exception, stackTrace); + await transaction.finish(status: SpanStatus.internalError()); + } + } +} + +Transaction getTransaction() => WebTransaction(); diff --git a/min_version_test/web/index.html b/min_version_test/web/index.html new file mode 100644 index 0000000000..e69de29bb2