diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart
deleted file mode 100644
index ca30a7b70dea7098a6b70074e04f7b356473458f..0000000000000000000000000000000000000000
--- a/integration_test/app_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-import 'package:flutter_dotenv/flutter_dotenv.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:gecko/globals.dart';
-import 'package:gecko/models/widgets_keys.dart';
-import 'package:integration_test/integration_test.dart';
-import 'package:gecko/main.dart' as app;
-import 'tests_utility.dart';
-
-void main() {
-  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
-
-  group('Ğecko basics', () {
-    testWidgets('Import chests', (tester) async {
-      app.main();
-      await tester.pumpAndSettle(const Duration(seconds: 1));
-
-      // Change Duniter endpoint to local
-      await changeNode(tester);
-
-      // Delete all existing chests
-      await deleteAllWallets(tester);
-
-      // Restore a chest
-      await restoreChest(tester);
-
-      // Execute a transaction to test2
-      await payTest2(tester);
-    });
-  });
-}
-
-Future changeNode(WidgetTester tester) async {
-  final ipAddress = dotenv.env['ip_address'] ?? '127.0.0.1';
-  log.d('ip address: $ipAddress');
-
-  await goKey(tester, keyDrawerMenu);
-  await goKey(tester, keyParameters);
-  await goKey(tester, keySelectDuniterNodeDropDown, duration: 5);
-  await goKey(tester, keySelectDuniterNode('Personnalisé'), selectLast: true);
-  await enterText(tester, keyCustomDuniterEndpoint, 'ws://$ipAddress:9944');
-  // await sleep(tester, 10000);
-  await goKey(tester, keyConnectToEndpoint);
-  await isIconPresent(tester, Icons.add_card_sharp,
-      timeout: const Duration(seconds: 8));
-  await goBack(tester);
-
-  // await waitFor(tester, 'Vous êtes bien connecté');
-}
-
-// Customs actions
-Future deleteAllWallets(WidgetTester tester) async {
-  if (await isPresent(tester, 'Rechercher')) {
-    await goKey(tester, keyDrawerMenu);
-    await goKey(tester, keyParameters);
-    await goKey(tester, keyDeleteAllWallets);
-    await goKey(tester, keyConfirm);
-    await tester.pumpAndSettle();
-  }
-}
-
-Future restoreChest(WidgetTester tester) async {
-  await goKey(tester, keyRestoreChest);
-  Clipboard.setData(const ClipboardData(
-      text:
-          'pipe paddle ketchup filter life ice feel embody glide quantum ride usage'));
-  await tester.pumpAndSettle();
-  await goKey(tester, keyPastMnemonic);
-  await tester.pumpAndSettle();
-  await goKey(tester, keyGoNext);
-  await goKey(tester, keyGoNext);
-  await goKey(tester, keyGoNext);
-  await goKey(tester, keyGoNext);
-  final isCached = await isIconPresent(tester, Icons.check_box);
-  if (!isCached) await goKey(tester, keyCachePassword);
-  await enterText(tester, keyPinForm, 'AAAAA');
-  await waitFor(tester, 'Accéder à mon coffre');
-  await goKey(tester, keyGoWalletsHome);
-  await waitFor(tester, 'ĞD');
-  await goBack(tester);
-  await waitFor(tester, "y'a pas de lézard");
-}
-
-Future payTest2(WidgetTester tester) async {
-  await waitFor(tester, 'Rechercher');
-  await goKey(tester, keyOpenSearch);
-  await enterText(tester, keySearchField,
-      '5E4i8vcNjnrDp21Sbnp32WHm2gz8YP3GGFwmdpfg5bHd8Whb');
-  await goKey(tester, keyConfirmSearch);
-  await waitFor(tester, 'Hd8Whb');
-  await goKey(tester,
-      keySearchResult('5E4i8vcNjnrDp21Sbnp32WHm2gz8YP3GGFwmdpfg5bHd8Whb'));
-  await waitFor(tester, 'Hd8Whb');
-  await waitFor(tester, 'ĞD');
-  await goKey(tester, keyPay);
-  await enterText(tester, keyAmountField, '2.14');
-  await goKey(tester, keyConfirmPayment);
-  await sleep(tester);
-  await spawnBlock(tester, keyCloseTransactionScreen);
-
-  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
-  await goKey(tester, keyCloseTransactionScreen);
-  await waitFor(tester, 'Hd8Whb');
-}
diff --git a/integration_test/duniter/data/gecko_tests.json b/integration_test/duniter/data/gecko_tests.json
index 6e18849d75e61d277cf69c1dc90ab370b9e0d519..1cbcf633546a85e209265b49da3f5777f0da1a72 100644
--- a/integration_test/duniter/data/gecko_tests.json
+++ b/integration_test/duniter/data/gecko_tests.json
@@ -2,7 +2,7 @@
   "first_ud": 10000,
   "first_ud_reeval": 100,
   "genesis_parameters": {
-    "genesis_certs_expire_on": 2102400,
+    "genesis_certs_expire_on": 50,
     "genesis_certs_min_received": 3,
     "genesis_memberships_expire_on": 1051200,
     "genesis_smith_certs_expire_on": 2102400,
diff --git a/integration_test/gecko_complete.dart b/integration_test/gecko_complete.dart
new file mode 100644
index 0000000000000000000000000000000000000000..1a42d4ca8f27c7793df45c447ebeac9253016c8d
--- /dev/null
+++ b/integration_test/gecko_complete.dart
@@ -0,0 +1,193 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter_dotenv/flutter_dotenv.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:gecko/globals.dart';
+import 'package:gecko/models/widgets_keys.dart';
+import 'package:integration_test/integration_test.dart';
+import 'package:gecko/main.dart' as app;
+import 'tests_utility.dart';
+
+void main() {
+  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
+
+  testWidgets('Gecko complete', (tester) async {
+    app.main();
+    await tester.pumpAndSettle(const Duration(seconds: 1));
+
+    // Change Duniter endpoint to local
+    await changeNode(tester);
+
+    // Delete all existing chests
+    await deleteAllWallets(tester);
+
+    // Restore a chest
+    await restoreChest(tester);
+
+    // Execute a transaction to test2
+    await payTest2(tester);
+
+    // Certify test5 account with 3 account to become member
+    await certifyTest5(tester);
+  });
+}
+
+Future changeNode(WidgetTester tester) async {
+  final ipAddress = dotenv.env['ip_address'] ?? '127.0.0.1';
+  log.d('ip address: $ipAddress');
+
+  await goKey(tester, keyDrawerMenu);
+  await goKey(tester, keyParameters);
+  await goKey(tester, keySelectDuniterNodeDropDown, duration: 5);
+  await goKey(tester, keySelectDuniterNode('Personnalisé'), selectLast: true);
+  await enterText(tester, keyCustomDuniterEndpoint, 'ws://$ipAddress:9944');
+  // await sleep(tester, 10000);
+  await goKey(tester, keyConnectToEndpoint);
+  await isIconPresent(tester, Icons.add_card_sharp,
+      timeout: const Duration(seconds: 8));
+  await goBack(tester);
+
+  // await waitFor(tester, 'Vous êtes bien connecté');
+}
+
+// Customs actions
+Future deleteAllWallets(WidgetTester tester) async {
+  if (await isPresent(tester, 'Rechercher')) {
+    await goKey(tester, keyDrawerMenu);
+    await goKey(tester, keyParameters);
+    await goKey(tester, keyDeleteAllWallets);
+    await goKey(tester, keyConfirm);
+    await tester.pumpAndSettle();
+  }
+}
+
+Future restoreChest(WidgetTester tester) async {
+  await goKey(tester, keyRestoreChest);
+  Clipboard.setData(const ClipboardData(
+      text:
+          'pipe paddle ketchup filter life ice feel embody glide quantum ride usage'));
+  await tester.pumpAndSettle();
+  await goKey(tester, keyPastMnemonic);
+  await tester.pumpAndSettle();
+  await goKey(tester, keyGoNext);
+  await goKey(tester, keyGoNext);
+  await goKey(tester, keyGoNext);
+  await goKey(tester, keyGoNext);
+  final isCached = await isIconPresent(tester, Icons.check_box);
+  if (!isCached) await goKey(tester, keyCachePassword);
+  await enterText(tester, keyPinForm, 'AAAAA');
+  await waitFor(tester, 'Accéder à mon coffre');
+  await goKey(tester, keyGoWalletsHome);
+  await waitFor(tester, 'ĞD');
+
+  // Test add a new derivation
+  await addDerivation(tester);
+  await goKey(tester,
+      keyOpenWallet('5Dq3giahrBfykJogPetZJ2jjSmhw49Fa7i6qKkseUvRJ2T3R'));
+  await goKey(tester, keyCopyAddress);
+  await waitFor(tester, 'Cette adresse a été copié');
+  await goBack(tester);
+  await goBack(tester);
+  await waitFor(tester, "y'a pas de lézard");
+}
+
+Future payTest2(WidgetTester tester) async {
+  await waitFor(tester, 'Rechercher');
+  await goKey(tester, keyOpenSearch);
+  final addressToSearch = (await Clipboard.getData('text/plain'))!.text;
+  final endAddress = addressToSearch!.substring(addressToSearch.length - 6);
+  expect(addressToSearch, '5Dq3giahrBfykJogPetZJ2jjSmhw49Fa7i6qKkseUvRJ2T3R');
+  await enterText(tester, keySearchField, addressToSearch);
+  await goKey(tester, keyConfirmSearch);
+  await waitFor(tester, endAddress);
+  await goKey(tester, keySearchResult(addressToSearch));
+  await waitFor(tester, endAddress);
+  await waitFor(tester, '0.0 ĞD');
+  await goKey(tester, keyPay);
+  await enterText(tester, keyAmountField, '12.14');
+  await goKey(tester, keyConfirmPayment);
+  // await sleep(tester);
+  await spawnBlock(tester, keyCloseTransactionScreen);
+
+  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
+  await goKey(tester, keyCloseTransactionScreen);
+  await waitFor(tester, '12.14');
+  await spawnBlock(tester, keyViewActivity);
+  await waitFor(tester, '9.14');
+}
+
+Future addDerivation(WidgetTester tester) async {
+  await goKey(tester, keyAddDerivation);
+  await waitFor(tester, 'Portefeuille 5');
+}
+
+Future certifyTest5(WidgetTester tester) async {
+  // Create identity with Test1 account
+  // await spawnBlock(tester, keyViewActivity, 5);
+  // await sleep(tester);
+  await goKey(tester, keyCertify);
+  await goKey(tester, keyConfirm);
+  await spawnBlock(tester, keyViewActivity);
+  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
+  await goKey(tester, keyCloseTransactionScreen);
+  await waitFor(tester, 'Identité créée');
+
+  // Confirm Identity Test5
+  await goKey(tester, keyAppBarChest, duration: 300);
+  await goKey(tester,
+      keyOpenWallet('5Dq3giahrBfykJogPetZJ2jjSmhw49Fa7i6qKkseUvRJ2T3R'));
+  await goKey(tester, keyCopyAddress);
+  await goKey(tester, keyConfirmIdentity);
+  await enterText(tester, keyEnterIdentityUsername, 'test5');
+  await goKey(tester, keyConfirm);
+  await spawnBlock(tester, keyCloseTransactionScreen);
+  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
+  await goKey(tester, keyCloseTransactionScreen);
+  await waitFor(tester, 'Identité confirmée');
+  await goBack(tester);
+  await goKey(tester,
+      keyOpenWallet('5E4i8vcNjnrDp21Sbnp32WHm2gz8YP3GGFwmdpfg5bHd8Whb'));
+  await goKey(tester, keySetDefaultWallet);
+  await waitFor(tester, 'Ce portefeuille est celui par defaut');
+
+  await goKey(tester, keyAppBarSearch);
+  final addressToSearch = (await Clipboard.getData('text/plain'))!.text;
+  final endAddress = addressToSearch!.substring(addressToSearch.length - 6);
+  expect(addressToSearch, '5Dq3giahrBfykJogPetZJ2jjSmhw49Fa7i6qKkseUvRJ2T3R');
+  await enterText(tester, keySearchField, addressToSearch);
+  await goKey(tester, keyConfirmSearch);
+  await waitFor(tester, endAddress);
+  await goKey(tester, keySearchResult(addressToSearch));
+  await waitFor(tester, endAddress);
+  await waitFor(tester, '1');
+
+  // Certify with test2 account
+  await goKey(tester, keyCertify);
+  await goKey(tester, keyConfirm);
+  await spawnBlock(tester, keyViewActivity);
+  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
+  await goKey(tester, keyCloseTransactionScreen);
+  await waitFor(tester, '2');
+
+  // Change default wallet to test3
+  await goKey(tester, keyPay);
+  await goKey(tester, keyChangeChest);
+  await goKey(tester,
+      keySelectThisWallet('5FhTLzXLNBPmtXtDBFECmD7fvKmTtTQDtvBTfVr97tachA1p'));
+  await goKey(tester, keyConfirm);
+  await sleep(tester);
+
+  // Certify with test3 account
+  await goKey(tester, keyCertify);
+  await goKey(tester, keyConfirm);
+  await spawnBlock(tester, keyViewActivity);
+  await waitFor(tester, 'validé !', timeout: const Duration(seconds: 1));
+  await goKey(tester, keyCloseTransactionScreen);
+  await waitFor(tester, 'Vous devez attendre');
+
+  // Check if test5 is member
+  await goKey(tester, keyAppBarChest, duration: 300);
+  await goKey(tester,
+      keyOpenWallet('5Dq3giahrBfykJogPetZJ2jjSmhw49Fa7i6qKkseUvRJ2T3R'));
+  await waitFor(tester, 'Membre validé !');
+}
diff --git a/integration_test/launch_test.sh b/integration_test/launch_test.sh
index 482dccd56226be908d96c7de69da6560d585de17..aa72d853f335d0fce936ce80140f592c9983400a 100755
--- a/integration_test/launch_test.sh
+++ b/integration_test/launch_test.sh
@@ -4,7 +4,8 @@
 # MP="`( cd \"$MP\" && pwd )`"
 # cd $MP
 
-args="$@"
+testName=$1
+[[ ! $testName ]] && testName='gecko_complete'
 
 # Get local IP and set .env
 ip_address=$(hostname -I | awk '{print $1}')
@@ -18,7 +19,7 @@ docker-compose up -d
 cd ../..
 
 # Start integration test
-flutter test integration_test/app_test.dart
+flutter test integration_test/$testName.dart
 
 # Stop Duniter
 cd integration_test/duniter
diff --git a/integration_test/tests_utility.dart b/integration_test/tests_utility.dart
index 36946ba6f21d71a57eec105438ce37cc0542925f..50130a6a653208f2bb02299fbeb1e2d76e0cc658 100644
--- a/integration_test/tests_utility.dart
+++ b/integration_test/tests_utility.dart
@@ -1,10 +1,11 @@
-// CUSTOM METHODES
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:provider/provider.dart';
 
+// CUSTOM METHODS
+
 Future sleep(WidgetTester tester, [int time = 1000]) async {
   await Future.delayed(Duration(milliseconds: time));
 }
@@ -72,17 +73,10 @@ Future<bool> isIconPresent(WidgetTester tester, IconData icon,
   return finder.evaluate().isEmpty ? false : true;
 }
 
-Future spawnBlock(WidgetTester tester, Key customKey) async {
-  final BuildContext context =
-      tester.element(find.byKey(customKey));
+Future spawnBlock(WidgetTester tester, Key customKey, [int number = 1]) async {
+  await sleep(tester, 1000);
+  final BuildContext context = tester.element(find.byKey(customKey));
   SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false);
-  await sub.spawnBlock();
-}
-
-extension Truncate on String {
-  String truncate({required int max, String suffix = ''}) {
-    return length < max
-        ? this
-        : '${substring(0, substring(0, max - suffix.length).lastIndexOf(" "))}$suffix';
-  }
+  sub.spawnBlock(number);
+  await sleep(tester, 500);
 }
diff --git a/lib/main.dart b/lib/main.dart
index a6d3cd6f69607310446d3d459d89e49e5b5310bf..a7262ebfed0d20c65cb87d0058a509cab097cfb7 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -110,7 +110,7 @@ Future<void> main() async {
           supportedLocales: const [Locale('en'), Locale('fr'), Locale('es')],
           path: 'assets/translations',
           fallbackLocale: const Locale('en'),
-          child: Gecko(indexerEndpoint),
+          child: const Gecko(),
         ),
       ),
     );
@@ -122,15 +122,14 @@ Future<void> main() async {
         supportedLocales: const [Locale('en'), Locale('fr'), Locale('es')],
         path: 'assets/translations',
         fallbackLocale: const Locale('en'),
-        child: Gecko(indexerEndpoint),
+        child: const Gecko(),
       ),
     );
   }
 }
 
 class Gecko extends StatelessWidget {
-  const Gecko(this.indexerEndpoint, {Key? key}) : super(key: key);
-  final String? indexerEndpoint;
+  const Gecko({Key? key}) : super(key: key);
 
   @override
   Widget build(BuildContext context) {
diff --git a/lib/models/widgets_keys.dart b/lib/models/widgets_keys.dart
index d5ca4c304976e06d134de34687f4ee88a020e00c..acc7b257118d1fc9f2c44556046b325d94ca8f4d 100644
--- a/lib/models/widgets_keys.dart
+++ b/lib/models/widgets_keys.dart
@@ -5,6 +5,9 @@ const keyInfoPopup = Key('keyInfoPopup');
 const keyGoNext = Key('keyGoNext');
 const keyCancel = Key('keyCancel');
 const keyConfirm = Key('keyConfirm');
+const keyAppBarSearch = Key('keyAppBarSearch');
+const keyAppBarQrcode = Key('keyAppBarQrcode');
+const keyAppBarChest = Key('keyAppBarChest');
 
 // Home
 const keyParameters = Key('keyParameters');
@@ -28,6 +31,8 @@ const keySetDefaultWallet = Key('keySetDefaultWallet');
 const keyDeleteWallet = Key('keyDeleteWallet');
 const keyWalletName = Key('keyWalletName');
 const keyRenameWallet = Key('keyRenameWallet');
+const keyConfirmIdentity = Key('keyConfirmIdentity');
+const keyEnterIdentityUsername = Key('keyEnterIdentityUsername');
 
 // Chest options
 const keyShowSeed = Key('keyShowSeed');
@@ -79,7 +84,9 @@ const keySearchField = Key('keySearchField');
 const keyConfirmSearch = Key('keyConfirmSearch');
 
 // Unit keys
-Key keyMnemonicWord(String word) => Key('keyMnemonicWord$word');
 Key keyTransaction(int keyId) => Key('keyTransaction$keyId');
+Key keyMnemonicWord(String word) => Key('keyMnemonicWord$word');
 Key keySearchResult(String keyId) => Key('keySearchResult$keyId');
 Key keySelectDuniterNode(String keyId) => Key('keySelectDuniterNode$keyId');
+Key keyOpenWallet(String keyId) => Key('keyOpenWallet$keyId');
+Key keySelectThisWallet(String keyId) => Key('keySelectThisWallet$keyId');
diff --git a/lib/providers/home.dart b/lib/providers/home.dart
index d82586326a881bf40f08c281e58590dffda5bb6e..d9390079c67a4859a8ae99c7055d5006d918aab3 100644
--- a/lib/providers/home.dart
+++ b/lib/providers/home.dart
@@ -11,6 +11,7 @@ import 'package:flutter/services.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/wallet_data.dart';
+import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
@@ -148,6 +149,7 @@ class HomeProvider with ChangeNotifier {
           const Spacer(),
           const SizedBox(width: 11),
           IconButton(
+            key: keyAppBarSearch,
             iconSize: 40,
             icon: const Image(image: AssetImage('assets/loupe-noire.png')),
             onPressed: () {
@@ -165,7 +167,7 @@ class HomeProvider with ChangeNotifier {
           ),
           const SizedBox(width: 22),
           const Spacer(),
-          IconButton(
+          IconButton(key: keyAppBarQrcode,
             iconSize: 70,
             icon: const Image(image: AssetImage('assets/qrcode-scan.png')),
             onPressed: () async {
@@ -178,7 +180,7 @@ class HomeProvider with ChangeNotifier {
           ),
           const Spacer(),
           const SizedBox(width: 15),
-          IconButton(
+          IconButton(key: keyAppBarChest,
             iconSize: 60,
             icon: const Image(image: AssetImage('assets/wallet.png')),
             onPressed: () async {
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index 6f18f69a8c4afd877e12149ee21cf755d4338de6..9f7e225baeff9be7448852472718a823374e7124 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -941,8 +941,7 @@ newKeySig: $newKeySig""");
 
   Future spawnBlock([int number = 1]) async {
     for (var i = 1; i <= number; i++) {
-      await sdk.webView!
-          .evalJavascript('api.rpc.engine.createBlock(true, true)');
+      sdk.webView!.evalJavascript('api.rpc.engine.createBlock(true, true)');
     }
   }
 
diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index 1fcac90e7944ad91664e3adfac860333b9b6da4e..f581a8b7ecacba90a7909b9829d4d89ceb17bfa7 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -238,7 +238,7 @@ class WalletOptionsProvider with ChangeNotifier {
             height: 100,
             child: Column(children: [
               const SizedBox(height: 20),
-              TextField(
+              TextField(key: keyEnterIdentityUsername,
                 onChanged: (_) => notifyListeners(),
                 inputFormatters: <TextInputFormatter>[
                   // FilteringTextInputFormatter.allow(RegExp("[0-9a-zA-Z]")),
@@ -259,7 +259,7 @@ class WalletOptionsProvider with ChangeNotifier {
                 Consumer<WalletOptionsProvider>(
                     builder: (context, wOptions, _) {
                   return TextButton(
-                    key: keyInfoPopup,
+                    key: keyConfirm,
                     child: Text(
                       "validate".tr(),
                       style: TextStyle(
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 22544f962088e53b14631f8121ade86c5399f725..34e47bd3deeb1e735317ac966c187f2253e0fb31 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -132,22 +132,24 @@ class HomeScreen extends StatelessWidget {
                   //   sub.nodeConnected = false;
                   // }
 
-                  HomeProvider homeProvider =
-                      Provider.of<HomeProvider>(ctx, listen: false);
-                  Connectivity()
-                      .onConnectivityChanged
-                      .listen((ConnectivityResult result) async {
-                    log.d('Network changed: $result');
-                    if (result == ConnectivityResult.none) {
-                      sub.nodeConnected = false;
-                      await sub.sdk.api.setting.unsubscribeBestNumber();
-                      homeProvider.changeMessage(
-                          "notConnectedToInternet".tr(), 0);
-                      sub.reload();
-                    } else {
-                      await sub.connectNode(ctx);
-                    }
-                  });
+                  // TODO: fix random bad network status on startup
+                  // HomeProvider homeProvider =
+                  //     Provider.of<HomeProvider>(ctx, listen: false);
+                  // Connectivity()
+                  //     .onConnectivityChanged
+                  //     .listen((ConnectivityResult result) async {
+                  //   log.d('Network changed: $result');
+                  //   if (result == ConnectivityResult.none) {
+                  //     sub.nodeConnected = false;
+                  //     await sub.sdk.api.setting.unsubscribeBestNumber();
+                  //     homeProvider.changeMessage(
+                  //         "notConnectedToInternet".tr(), 0);
+                  //     sub.reload();
+                  //   } else {
+                  //     await sub.connectNode(ctx);
+                  //   }
+                  // });
+                  await sub.connectNode(ctx);
                 }
                 // _duniterIndexer.checkIndexerEndpointBackground();
               });
diff --git a/lib/screens/myWallets/choose_wallet.dart b/lib/screens/myWallets/choose_wallet.dart
index eb38197c6c6a4a3e60d90b9a21646d9cbdf94c3b..8f4d73a444eb2991f645785f2155312d1a2bd17b 100644
--- a/lib/screens/myWallets/choose_wallet.dart
+++ b/lib/screens/myWallets/choose_wallet.dart
@@ -47,6 +47,7 @@ class ChooseWalletScreen extends StatelessWidget {
                   width: 470,
                   height: 70,
                   child: ElevatedButton(
+                    key: keyConfirm,
                     style: ElevatedButton.styleFrom(
                       elevation: 4,
                       primary: orangeC, // background
@@ -123,6 +124,7 @@ class ChooseWalletScreen extends StatelessWidget {
               Padding(
                   padding: const EdgeInsets.all(16),
                   child: GestureDetector(
+                    key: keySelectThisWallet(repository.address!),
                     onTap: () {
                       selectedWallet = repository;
                       myWalletProvider.rebuildWidget();
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index a202abda51a9b489f06b6967bc0a3659ef7c1a87..a6abfc2df61156039a4c591cd3fc50352a09a246 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -292,7 +292,7 @@ class WalletOptions extends StatelessWidget {
                 SizedBox(
                   width: 320,
                   height: 60,
-                  child: ElevatedButton(
+                  child: ElevatedButton(key: keyConfirmIdentity,
                     style: ElevatedButton.styleFrom(
                       elevation: 4,
                       primary: orangeC, // background
diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart
index 03ba5e12e1b903bbdc50e8a10ed476f3b45a09fe..cdf307ece2e9f3927324a9f37746e4b6b8df56b6 100644
--- a/lib/screens/myWallets/wallets_home.dart
+++ b/lib/screens/myWallets/wallets_home.dart
@@ -200,6 +200,7 @@ class WalletsHome extends StatelessWidget {
               Padding(
                   padding: const EdgeInsets.all(16),
                   child: GestureDetector(
+                    key: keyOpenWallet(repository.address!),
                     onTap: () {
                       walletOptions.getAddress(
                           currentChestNumber, repository.derivation!);
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index 45db562e255effa154b071b00c1147e4eaa10430..ae13fc717ed85c1af7255a6f6723909093b1d6c2 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -481,7 +481,7 @@ class WalletViewScreen extends StatelessWidget {
                         ),
                         const SizedBox(height: 10),
                         Consumer<SubstrateSdk>(builder: (context, sub, _) {
-                          return InkWell(
+                          return InkWell(key: keyChangeChest,
                             onTap: () async {
                               String? pin;
                               if (myWalletProvider.pinCode == '') {