* [#1417] Add authentication
- Closes#1417
- Closes#326
- Partially addresses [Electric-Coin-Company/zashi#7] too
- Creates reusable AuthenticationVM component with all necessary logic that reports authentication status to its callers
- Addresses authentication requirements for the Send funds, Delete wallet, Export private data, and Recovery phrase. The App access authentication use case is prepared and can be turned on anytime.
- The new logic also counts with possible future user customization via the app UI of the default on/off states for all implemented authentication use cases
- Send.Confirmation logic simplification
- This also adds the welcome screen (splash) animation to all the app entry points (the app recreation caused by system included)
* Allow unauthenticated access
- In case no authentication method is available on the device
* Build supported authenticators for the device
- Based on the device Android SDK version
* Disable broken screenshot testing
- This is a temporary change until #1448 is addressed
* Changelog update
* Add temporary placeholder screenshot test
To suppress no test error
- Closes#1354
- The repository regex changed to align with audit findings and still be able to cover both
com.android:signflinger:[version] and com.android.tools:common:[version]
* [#941] Loading screen UI
Co-authored-by: Honza Rychnovský <rychnovsky.honza@gmail.com>
* Fix unallowed doubled scroll
* Remove duplicate icon
* [#997] Splash alignment with welcome animation
* [#999] Compile SDK version 34
* [#1000] Colour system bars
* [#941] Load + Opening screens
- Contains UI of both these screens
- Their logic
- And the Load screen animation
- Designed util ScreenHeight composable
- Redesigned SecondaryButton to match the design and fixed its positioning on different screens
---------
Co-authored-by: Venkat-corebts <143575548+Venkat-corebts@users.noreply.github.com>
* [#653] Move copy to buffer action
- Trigger this action after seed phrase panel click and confirm via dialog window
- Added basic ui tests
- Added also dialog integration test
- Added related strings
* Revert "[#653] Move copy to buffer action"
This reverts commit 813eab00b747a779be5ef652745002f65c04572c.
* [#150] Refactoring the Backup flow to use Compose Scaffold
* Fix Backup flow screenshot test
- Removed scroll actions above nodes, which are no longer part of scroll behaviour - bottom navigation buttons are now part of Compose Scaffold component.
* Added scroll actions in screenshot test of Profile screen
- After tested the whole app with screenshot test on smaller screen device 4WVGA Nexus S
* Remove unnecessary screenshot test click action
- This click action on the Profile screen title seems to be unnecessary for the test and creates confusion
* ScreenshotTest module auto components init
- Changed the way we auto-initialize components in ScreenshotTest module
- Now we use androidx-startup library for it
- And we disabled the default way
* Add system back button navigation support
* Enable scrolling for Backup Test screen
* Fix Screenshot test on small screen in landscape
- Tested and fixed cases in which our screenshot test wasn't successful
- Tested on 4 WVGA Nexus S in landscpae mode
* Code clean
* Address review comments + stages refactoring
- Flattened BackupStage sealed class. Test and Failure are now regular stages.
- Introduced CheckSeed stage, instead of reusing Seed phrase for re-viewing.
- Simplified BackupView and custom Saver implementations.
- List of possible screen state stages is now lazy loaded value, instead of method.
- Some of the stages now override stage moving methods to enhance Backup screen state machine, as it's not linear.
- Existing tests updated to align with the new implementation of stages.
* Remove `run` block
* Rename CheckSeed -> ReviewSeed
Check might imply to another reader of the code that there is some going back to the test. I went with the word Review which seems to better convey how that screen is passive for the user.
* Simplify list construction
This should have better performance.
* Crash instead of allowing back navigation
* Add documentation
* Fix initialization error
* Add non-localized string tag
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
* Temporary enable FTL test
* Enable emulator.wft tests for ui-integration-test module on CI
* Rebase onto main
* Test Fladle configuration for ui-integration-test module
* Fix Fladle for ui-integration-test module
* Rename ui-integration-test module flade configuration
* Disable again FTL action from PRs
* Clear support for FTL from ui-integration-test module
* Refactor the emulator.wtf support across our modules.
* [#599] Macrobenchmark test module
- Created new dedicated macrobenchmark test module
- Updated related Architecture and Setup documentation
- Connected to app module
- New benchmark build type
- Related run configuration above custom Gradle task
- Basic startup benchmark test included
* Benchmark build variant simplification
* Run benchmarking simplification
* Documentation update.
* New property IS_SIGN_RELEASE_BUILD_WITH_DEBUG_KEY
- It enables signing the release build with debug key configuration. Default value is false.
- First, we check if we can sign it with release configs, otherwise with debug.
- Documentation updated.
* Benchmarking documentation update
* Adds support for Android SDK 32 and 33
- Bumped benchmark library to the latest alpha version
- Which results in a need of adding profile-installer library in target module (app)
- Now we're able to run benchmarking on Android SDK level 29 and higher (i.e. latest levels included)
- Updated related documentation
* Enables benchmarking for emulators
- I've decided to support emulator devices with our benchmark test module at the end. Documentation and code comments explain to a user that the results may not be the same as on a real physical device. But until we have it set up in CI, we can benefit from having it set up like this.
* Temporary enable FTL test
* Enable emulator.wft tests for ui-integration-test module on CI
* Test Fladle configuration for ui-integration-test module
* Fix Fladle for ui-integration-test module
* Rename ui-integration-test module flade configuration
* Disable again FTL action from PRs
* Clear support for FTL from ui-integration-test module
* Refactor the emulator.wtf support across our modules.
* [#598] Refactoring ScreenshotTest to a separate test module
- Created a new com.android.test module
- Moved our ScreenShotTest to the separate module
- Enabled the new module for emulator.wtf service
- Cleaned up the app module from ScreenShotTest
- Updated Architecture and Setup documentation
* Exclude pure test modules from Detekt check
* Improved run configurations
- Changed common emulator.wtf run configuration name to align with the rest of our configurations
- Added configuration for the new screenshot tests module
- Updated documentation
* Linked code TODO
* Disabled self-instrumenting
- As it appeared to be the way how to leverage the app module Gradle settings in this new module
- App name is taken from app module settings
- Screenshot tests works with pseudolocales again
* [#525] Refactoring Integration Test Module
- Change module type to test + related Gradle scripts change
- Rename module to - remove the trailing Lib suffix + documentation
- Move module structure from test to main source
* Static checks result fix
* Temporary enable FTL test
* Test updated emulator.wft version
* Update locked emulator.wtf dependency version
* Enable emulator.wft tests for ui-integration-test module on CI
* Fix enable emulator.wft tests for ui-integration-test module on CI
- Update documentation
* Test Fladle configuration for ui-integration-test module
* Fix Fladle for ui-integration-test module
* Rename ui-integration-test module flade configuration
* Disable again FTL action from PRs
* Clear support for FTL from ui-integration-test module
* Refactor the emulator.wtf support across our modules.
* Fix Mermaid graph syntax
* Minor change in comment
* Fix ui-integration-test module run configuration
- Fixed manually
- Aligned with other run configurations
- Stable and beta versions of AS behave differentially, but after this fix it seems to be working as expected in both
* Update emulator.wtf run configuration
- Covered ui-integration-test module too
- Changed configuration name
* [#209] Update Compose dependency to latest version 1.2.0-beta03
- Update dependency
- Align our integration tests with the new Compose requirements
- Add integration folder to tests, if missing
- Split integration tests, which require activity to separate classes
- Remove unnecessary custom activity for each integration app part and create one custom common activity
- Implement Downloadable fonts from Compose 1.2
- Update Third party licenses documentation
- Also reduced liklihood of timeouts on Firebase test lab for robo tests
- Fix emulatorwtf run configuration
- Fix screenshots on older API levels
- Fix minumum range for emulator.wtf
* [#312] [#309] Scaffold Scan QR Screen
- Screen scaffolding.
- Model classes.
- Screen states handling.
- Needed dependencies added.
- Camera permission handling. Redirect to Settings.
- Added SettingsUtilTest class.
- Added view classes tests.
- Renamed tag class in update package.
- Fix the scan frame size while changing the screen orientation.
- Use local variable for cameraProvider.
- Use UUID for source of randomness.
- Eliminate blocking call for camera.
- Fix preview name.
- Remove Google Guava dependency.
- Suppress Lint warning.
- Improved calculation of the camera frame size. Moved it into Constraint layout.
- Added custom image analyser class.
- Implemented logic for the QR scan screen while QR code is found.
- Manual tests added.
- New module with integration tests for QR Scan screen. Added 3 integration and 4 view tests.
- Simplify QR Scan screen view basic tests.
- Switched from pure compose permission handling to Accompanist way of handling CAMERA permission.
- Added validation of Zcash wallet address from QR scanning result.
- Fix the integration tests for the CI WTF emulator runs.
- Add comment on RTL test result.
- Improve waitForDeviceIdle() method. Use it on the other test too.
- Change the integration test module main manifest package name.
- Debounce scans.
- Improve thread safety of scan collection.
- Added instructions on how to set up an emulator in manual tests.
- Replace compose collectAsState() with coroutine launch().
- Add sample() to get rid of several callback events at the same time.
- Stop updating the scanState when it's already in Scanning state.
- Fix condition on navigation.
- Remove validateJob check.
- Speed up the integration test
- Wrap ImageAnalysis.qrCodeFlow to remember.
- Auto-close the camera image when we're done with it in all cases.
- Update minimal SDK version to 24 for WTF emulators.
- Update Architecture documentation.
- Removed extra blank space in ui-design module definition.
- Add ui-integration-test-lib.
- Update Mermaid diagram with newly added module.
- Move UI modules into one wrap in the diagram.
- Move sdk-ext-lib and sdk-ext-ui under the same modules section.
- Update camera dependencies.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
- Added automatic exception logging, registered in the Application object
- The design sends the exception to a second process, as the main process could be in a bad state when crashing. If we ever encounter problems with this design, it is easily toggleable to turn off with a boolean resource
- Reading the process name is a bit complex on older Android versions, so we leverage a ContentProvider (which runs prior to Application.onCreate()) to get the process name
- Added a simple logging mechanism for multiprocess and multithread log messages
- Refactored spackle-lib into spackle-lib (multiplatform) and spackle-android-lib
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
* [#312] [#309] Scaffold Scan QR Screen
- Screen scaffolding.
- Model classes.
- Screen states handling.
- Needed dependencies added.
- Camera permission handling. Redirect to Settings.
- Added SettingsUtilTest class.
- Added view classes tests.
- Renamed tag class in update package.
- Fix the scan frame size while changing the screen orientation.
- Suppress Lint warning
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
- Basic screen UI scaffolding.
- Set up communication with Google Play in-app update API.
- Mocking communication with Google Play API.
- Added unit, UI and integration tests for the in-app update screen model, util, view and viewmodel classes.
- Added mock implementation of helper AppUpdateChecker class.
- Introduced ViewModel integration test.
- Filed issue for future manual testing of implemented in-app update mechanisms after the wallet app is released on Google Play.
- Implement FakeAppUpdateManager in AppUpdateCheckerMock instead of the ugly AppUpdateInfo instantiation - this affected the tests too.
Co-authored-by: Carter Jernigan <git@carterjernigan.com>
This improves the reliability of UI tests, especially on physical devices, by helping ensure the screen is on.
Co-authored-by: Honza <rychnovsky.honza@gmail.com>
This provides a basic screen for users to type a support inquiery, which then opens a pre-filled message in the user’s email app.
There are a few followup issues:
- Detect seed phrases in the email #377
- Report crashes in the generated email #378
- Fuzz timestamps #388
- Set the correct support email address #379
- Improve handling on devices without an email app #386
- Implementing regex solution for validation of input ZecAmount after confirm button is pressed.
- Added also unit tests for this new feature.
- Move necessary components from sdk-ext-lib to sdk-ext-ui module.
- Align implementation with comments form PR.
- Fix name of run configuration.
- Ensure consistent behavior of tests.
- Prevent illegal input in ZEC Send/Request form.
- New SDL-EXT-UI module for UI related SDK helper components.
- Regex for continuous validation of the entered ZEC amount.
- Added a new unit tests for validation of the regex too.
- Using the regex on ZEC Request and ZEC Send screens.
- Updated existing and created a new UI tests for validating entered ZEC amount values on Request and Send screens.
- Improve code to be validated with DetektAll static analyzation.
- Architecture documentation update with the newly added sdk-ext-ui module.
- Added run configuration sdk-ext-lib:connectedCheck for AS.
- Added check for digits count between grouping separators + tests.
- Refactoring test class name and its separator value.