Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automated Integration Tests Flows #1686

Merged
merged 110 commits into from
Nov 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
ccf54ab
feat: Integration tests setup and tests for Disclaimer, Welcome and S…
Blazebrain Jun 21, 2024
767ea37
feat: Integration test flow from start to restoring a wallet successf…
Blazebrain Jun 24, 2024
8ec38e1
test: Dashboard view test and linking to flow
Blazebrain Jun 25, 2024
66af74f
feat: Testing the Exchange flow section, selecting sending and receiv…
Blazebrain Jun 27, 2024
b31bbc9
test: Successfully create an exchange section
Blazebrain Jun 27, 2024
2038154
feat: Implement flow up to sending section
Blazebrain Jun 28, 2024
97fced4
test: Complete Exchange flow
Blazebrain Jul 1, 2024
f27deb2
fix dependency issue
OmarHatem28 Jul 3, 2024
7b99667
test: Final cleanups
Blazebrain Jul 3, 2024
31facfc
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Jul 3, 2024
e7670c2
feat: Add CI to run automated integration tests withan android emulator
Blazebrain Jul 3, 2024
b915e27
feat: Adjust Automated integration test CI to run on ubuntu 20.04-a
Blazebrain Jul 3, 2024
6e4c9e8
fix: Move integration test CI into PR test build CI
Blazebrain Jul 3, 2024
ab420e4
ci: Add automated test ci which is a streamlined replica of pr test b…
Blazebrain Jul 3, 2024
e2ee119
ci: Re-add step to access branch name
Blazebrain Jul 3, 2024
3e1705a
ci: Add KVM
Blazebrain Jul 3, 2024
bf5cfbe
ci: Add filepath to trigger the test run from
Blazebrain Jul 3, 2024
bcab3c7
ci: Add required key
Blazebrain Jul 3, 2024
30802cb
ci: Add required key
Blazebrain Jul 3, 2024
b8627d8
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Jul 3, 2024
edd57b1
ci: Add missing secret key
Blazebrain Jul 3, 2024
7c6e6a4
ci: Add missing secret key
Blazebrain Jul 3, 2024
7e6ab22
Merge branch 'main' into CW-659-Automated-Integrated-Tests
OmarHatem28 Jul 4, 2024
fd65b21
ci: Add nano secrets to workflow
Blazebrain Jul 5, 2024
d49a526
ci: Switch step to free space on runner
Blazebrain Jul 5, 2024
0b92ff4
ci: Remove timeout from workflow
Blazebrain Jul 5, 2024
eb56236
ci: Confirm impact that removing copy_monero_deps would have on entir…
Blazebrain Jul 5, 2024
712658c
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Jul 9, 2024
3a687ee
ci: Update CI and temporarily remove cache related to emulator
Blazebrain Jul 9, 2024
eb228ed
ci: Remove dynamic java version
Blazebrain Jul 9, 2024
1504b55
ci: Temporarily switch CI
Blazebrain Jul 9, 2024
034c575
ci: Switch to 11.x jdk
Blazebrain Jul 9, 2024
5940737
ci: Temporarily switch CI
Blazebrain Jul 9, 2024
a5f4475
ci: Revert ubuntu version
Blazebrain Jul 9, 2024
d7c307f
ci: Add more api levels
Blazebrain Jul 9, 2024
fee1335
ci: Add more target options
Blazebrain Jul 9, 2024
3e06eb7
ci: Settled on stable emulator matrix options
Blazebrain Jul 9, 2024
27ba3f1
ci: Add more target options
Blazebrain Jul 9, 2024
a1dfc24
ci: Modify flow
Blazebrain Jul 9, 2024
065e0ae
ci: Streamline api levels to 28 and 29
Blazebrain Jul 9, 2024
a930369
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Jul 11, 2024
a4b30ec
ci: One more trial
Blazebrain Jul 11, 2024
83d6efc
ci: Switch to flutter drive
Blazebrain Jul 11, 2024
b411134
ci: Reduce options
Blazebrain Jul 11, 2024
8ec2097
ci: Remove haven from test
Blazebrain Jul 11, 2024
89c1651
ci: Check for solana in list
Blazebrain Jul 11, 2024
35eb07b
ci: Adjust amounts and currencies for exchange flow
Blazebrain Jul 12, 2024
01cd3b0
ci: Set write response on failure to true
Blazebrain Jul 12, 2024
9dc96d7
ci: Split ci to funds and non funds related tests
Blazebrain Jul 12, 2024
989ecbb
test: Test for Send flow scenario and minor restructuring for test fo…
Blazebrain Jul 31, 2024
698dc40
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Jul 31, 2024
14735d3
chore: cleanup
Blazebrain Jul 31, 2024
0f91cec
ci: Pause CI for now
Blazebrain Aug 1, 2024
5a90915
ci: Pause CI for now
Blazebrain Aug 1, 2024
f41e604
ci: Pause CI for now
Blazebrain Aug 1, 2024
6aa8750
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 9, 2024
1169b41
test: Restore wallets integration automated tests
Blazebrain Aug 9, 2024
7a4ba7f
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 12, 2024
ea3dbc8
Fix: Add keys back to currency amount textfield widget
Blazebrain Aug 12, 2024
bdf1127
fix: Switch variable name
Blazebrain Aug 13, 2024
dbe7e40
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Aug 13, 2024
0f8215c
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 13, 2024
9ade090
fix: remove automation for now
Blazebrain Aug 13, 2024
94e7c0d
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Aug 13, 2024
b6474ae
tests: Automated tests for Create wallets flow
Blazebrain Aug 13, 2024
bd3b14c
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 13, 2024
929c046
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Aug 13, 2024
e9a41a1
tests: Further optimize common flows
Blazebrain Aug 13, 2024
06bde3e
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Aug 13, 2024
7c169fe
tests: Add missing await for call
Blazebrain Aug 13, 2024
992ad7e
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Aug 13, 2024
ab80805
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 15, 2024
4555b0b
tests: Confirm Seeds Display Properly WIP
Blazebrain Aug 15, 2024
d197b71
tests: Confirm Seeds Display Correctly Automated Tests
Blazebrain Aug 19, 2024
9cf6014
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 19, 2024
4102156
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Aug 19, 2024
2cb0e46
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Aug 19, 2024
deea858
Merge branch 'CW-659-Create-Wallets-Automated-Tests' of https://githu…
Blazebrain Aug 19, 2024
517c92c
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Aug 26, 2024
cc4c99e
fix: Add missing pubspec params for bitcoin and bitcoin_cash
Blazebrain Aug 27, 2024
1979fcb
feat: Automated Tests for Transaction History Flow
Blazebrain Aug 29, 2024
dc37952
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 10, 2024
2540347
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 11, 2024
5d27850
fix: Add missing pubspec parameter
Blazebrain Sep 11, 2024
5779d30
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 11, 2024
63e0848
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 11, 2024
f6cf4fc
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Sep 11, 2024
1bce162
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Sep 11, 2024
1314270
Merge branch 'CW-659-Create-Wallets-Automated-Tests' of https://githu…
Blazebrain Sep 11, 2024
ec74224
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 12, 2024
1e96271
feat: Automated Integration Tests for Transaction History flow
Blazebrain Sep 18, 2024
6c2890d
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 18, 2024
18bcc92
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 18, 2024
d0e0ddd
test: Updating send page robot and also syncing branch with main
Blazebrain Sep 18, 2024
c58d5a6
Merge branch 'CW-659-Automated-Integrated-Tests' of https://github.co…
Blazebrain Sep 18, 2024
6698c25
Merge branch 'CW-659-Restore-Wallets-Automated-Tests' of https://gith…
Blazebrain Sep 18, 2024
a096947
Merge branch 'CW-659-Create-Wallets-Automated-Tests' of https://githu…
Blazebrain Sep 18, 2024
57fd116
Merge branch 'CW-659-Confirm-Seeds-Display-Correctly' of https://gith…
Blazebrain Sep 18, 2024
bf97bc0
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 26, 2024
761b746
test: Modifying tests to flow with wallet grouping implementation
Blazebrain Sep 27, 2024
7d97ddb
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 27, 2024
cc00fda
fix: Issue with transaction history test
Blazebrain Sep 28, 2024
6a2367c
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Sep 28, 2024
67ac202
fix: Modifications to the PR and add automated confirmation for check…
Blazebrain Oct 3, 2024
92a1ad7
Merge branch 'main' of https://github.com/cake-tech/cake_wallet into …
Blazebrain Oct 8, 2024
d160ee2
test: Attempting automation for testing
Blazebrain Oct 8, 2024
abf6d6a
Merge branch 'main' into CW-659-Transaction-History-Automated-Tests
OmarHatem28 Nov 7, 2024
851ff0d
Merge branch 'CW-659-Transaction-History-Automated-Tests' of https://…
Blazebrain Nov 7, 2024
1823495
fix: Issue from merge conflicts
Blazebrain Nov 7, 2024
83612ae
test: Remove automation of test in this PR
Blazebrain Nov 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cw_bitcoin/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ dependency_overrides:

# The following section is specific to Flutter.
flutter:
uses-material-design: true

# To add assets to your package, add an assets section, like this:
# assets:
Expand Down
1 change: 1 addition & 0 deletions cw_bitcoin_cash/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ dependency_overrides:

# The following section is specific to Flutter packages.
flutter:
uses-material-design: true

# To add assets to your package, add an assets section, like this:
# assets:
Expand Down
1 change: 1 addition & 0 deletions cw_core/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ dependency_overrides:

# The following section is specific to Flutter.
flutter:
uses-material-design: true

# To add assets to your package, add an assets section, like this:
# assets:
Expand Down
121 changes: 97 additions & 24 deletions integration_test/components/common_test_cases.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@ class CommonTestCases {
hasType<T>();
}

Future<void> tapItemByKey(String key, {bool shouldPumpAndSettle = true}) async {
Future<void> tapItemByKey(
String key, {
bool shouldPumpAndSettle = true,
int pumpDuration = 100,
}) async {
final widget = find.byKey(ValueKey(key));
await tester.tap(widget);
shouldPumpAndSettle ? await tester.pumpAndSettle() : await tester.pump();
shouldPumpAndSettle
? await tester.pumpAndSettle(Duration(milliseconds: pumpDuration))
: await tester.pump();
}

Future<void> tapItemByFinder(Finder finder, {bool shouldPumpAndSettle = true}) async {
Expand All @@ -31,6 +37,11 @@ class CommonTestCases {
expect(typeWidget, findsOneWidget);
}

bool isKeyPresent(String key) {
final typeWidget = find.byKey(ValueKey(key));
return typeWidget.tryEvaluate();
}

void hasValueKey(String key) {
final typeWidget = find.byKey(ValueKey(key));
expect(typeWidget, findsOneWidget);
Expand All @@ -53,33 +64,86 @@ class CommonTestCases {
await tester.pumpAndSettle();
}

Future<void> scrollUntilVisible(String childKey, String parentScrollableKey,
{double delta = 300}) async {
final scrollableWidget = find.descendant(
of: find.byKey(Key(parentScrollableKey)),
matching: find.byType(Scrollable),
);
Future<void> dragUntilVisible(String childKey, String parentKey) async {
await tester.pumpAndSettle();

final itemFinder = find.byKey(ValueKey(childKey));
final listFinder = find.byKey(ValueKey(parentKey));

// Check if the widget is already in the widget tree
if (tester.any(itemFinder)) {
// Widget is already built and in the tree
tester.printToConsole('Child is already present');
return;
}

// We can adjust this as needed
final maxScrolls = 200;

final isAlreadyVisibile = isWidgetVisible(find.byKey(ValueKey(childKey)));
int scrolls = 0;
bool found = false;

if (isAlreadyVisibile) return;
// We start by scrolling down
bool scrollDown = true;

await tester.scrollUntilVisible(
find.byKey(ValueKey(childKey)),
delta,
scrollable: scrollableWidget,
// Flag to check if we've already reversed direction
bool reversedDirection = false;

// Find the Scrollable associated with the Parent Ad
final scrollableFinder = find.descendant(
of: listFinder,
matching: find.byType(Scrollable),
);

// Ensure that the Scrollable is found
expect(
scrollableFinder,
findsOneWidget,
reason: 'Scrollable descendant of the Parent Widget not found.',
);
}

bool isWidgetVisible(Finder finder) {
try {
final Element element = finder.evaluate().single;
final RenderBox renderBox = element.renderObject as RenderBox;
return renderBox.paintBounds
.shift(renderBox.localToGlobal(Offset.zero))
.overlaps(tester.binding.renderViews.first.paintBounds);
} catch (e) {
return false;
// Get the initial scroll position
final scrollableState = tester.state<ScrollableState>(scrollableFinder);
double previousScrollPosition = scrollableState.position.pixels;

while (!found && scrolls < maxScrolls) {
tester.printToConsole('Scrolling ${scrollDown ? 'down' : 'up'}, attempt $scrolls');

// Perform the drag in the current direction
await tester.drag(
scrollableFinder,
scrollDown ? const Offset(0, -100) : const Offset(0, 100),
);
await tester.pumpAndSettle();
scrolls++;

// Update the scroll position after the drag
final currentScrollPosition = scrollableState.position.pixels;

if (currentScrollPosition == previousScrollPosition) {
// Cannot scroll further in this direction
if (reversedDirection) {
// We've already tried both directions
tester.printToConsole('Cannot scroll further in both directions. Widget not found.');
break;
} else {
// Reverse the scroll direction
scrollDown = !scrollDown;
reversedDirection = true;
tester.printToConsole('Reached the end, reversing direction');
}
} else {
// Continue scrolling in the current direction
previousScrollPosition = currentScrollPosition;
}

// Check if the widget is now in the widget tree
found = tester.any(itemFinder);
}

if (!found) {
tester.printToConsole('Widget not found after scrolling in both directions.');
return;
}
}

Expand All @@ -91,6 +155,15 @@ class CommonTestCases {
await tester.pumpAndSettle();
}

void findWidgetViaDescendant({
required FinderBase<Element> of,
required FinderBase<Element> matching,
}) {
final textWidget = find.descendant(of: of, matching: matching);

expect(textWidget, findsOneWidget);
}

Future<void> defaultSleepTime({int seconds = 2}) async =>
await Future.delayed(Duration(seconds: seconds));
}
2 changes: 1 addition & 1 deletion integration_test/components/common_test_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ class CommonTestConstants {
static final String testWalletName = 'Integrated Testing Wallet';
static final CryptoCurrency testReceiveCurrency = CryptoCurrency.sol;
static final CryptoCurrency testDepositCurrency = CryptoCurrency.usdtSol;
static final String testWalletAddress = 'An2Y2fsUYKfYvN1zF89GAqR1e6GUMBg3qA83Y5ZWDf8L';
static final String testWalletAddress = '5v9gTW1yWPffhnbNKuvtL2frevAf4HpBMw8oYnfqUjhm';
}
Loading
Loading