Skip to content

Commit

Permalink
Web Min Version Test (#1537)
Browse files Browse the repository at this point in the history
  • Loading branch information
denrase authored Jul 11, 2023
1 parent 84a3369 commit 5bd9613
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 26 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/min_version_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
31 changes: 5 additions & 26 deletions min_version_test/lib/main.dart
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -94,33 +91,15 @@ class _MyHomePageState extends State<MyHomePage> {

Future<void> _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
// so that the display can reflect the updated values. If we changed
// _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<String>('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());
}
});
}

Expand Down
36 changes: 36 additions & 0 deletions min_version_test/lib/transaction/file_transaction.dart
Original file line number Diff line number Diff line change
@@ -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<void> 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<String>('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();
5 changes: 5 additions & 0 deletions min_version_test/lib/transaction/transaction.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Transaction {
Future<void> start() async {
// Do nothing...
}
}
4 changes: 4 additions & 0 deletions min_version_test/lib/transaction/transaction_locator.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import 'package:min_version_test/transaction/transaction.dart';

Transaction getTransaction() =>
throw UnsupportedError('Cannot create sample transaction.');
34 changes: 34 additions & 0 deletions min_version_test/lib/transaction/web_transaction.dart
Original file line number Diff line number Diff line change
@@ -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<void> 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<String>('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();
Empty file added min_version_test/web/index.html
Empty file.

0 comments on commit 5bd9613

Please sign in to comment.