83 Commits

Author SHA1 Message Date
Johannes Klein
0e0a6560ac Vision camera v3 (#1121)
* Bump vision-camera

* Refactor patch

* Move patched orientation into patch functions file

* Update react-native-vision-camera+3.4.1.patch

* Switch to MacOS 13 runner

Vision camera requires XCode 15 to compile.

* Add step to specify XCode 15

* Higher level of logging

* Increase test timeout

* Add comment

* Remove navigation to obs without evidence for signed out user

* Patch for location permission not working on iOS

* Increase setup timeout

* Increase some more timeouts

* Revert back to less logging in CI

* Does it have to do with timeouts?

* Trace log level

* Update README.md

* Disable Homebrew’s auto update and install cleanup

* Setup ruby step

* Install pods only if not cached

* Revert "Install pods only if not cached"

This reverts commit 42a2ea02f9.

* Run simulator in headless mode, record all logs

* Increase timeouts again

* Revert "Remove navigation to obs without evidence for signed out user"

This reverts commit 2b4718f5ce.

* Add boolean to run use effect only once

* Did merge wrong code

* There is one more permission gate when entering obs edit now

* Add permission gate dismissal to signed out user test

* Add comment, rename state

* Lower action timeout

* Update react-native-vision-camera to 3.6, update Reanimated to v3 (#838)

* Bump camera and plugin

* Upgrade Reanimated and libs using it

* Update vision-camera mock

* Remove superfluous patch

* Fix type

* Add mocks for e2e tests because bottom sheet does not work on AOSP

* Update package-lock.json

* Update vision camera

* Bump vision camera

* Update vision camera patch version

* Remove superfluous patch

* Update vision camera

* Update vision-camera and plugin

* Use latest vision plugin = rebased v3

* Run npm clean-start

* No longer needed

* Duplicate prop

* Switch back to v3 code

* Upgrading Detox fixes issue with iOS tests failing

Because of previous lack of permissions.

* Update to latest detox version

* Npm i force

* Vision 3 e2e testing, (#1126)

* Remove jest detox config

* Revert e2e timeout increase

* Revert jest config timeout

* Use macos 14 runner which has XCode 15 per default

* Use latest bottom sheet

* Revert "Use latest bottom sheet"

This reverts commit c66cd09838.

* Adding comma back in

* Remove spaces

* Use latest vision-camera and plugin

* Use release version of vision-camera

* Remove force flag

* Update react-native-worklets-core

* Upgrade reanimated

* Update babel.config to allow nested worklets

* Run frame processor async

* Remove enableGpuBuffers flag

* Remove no longer needed comment

* Update comments about version

* Update vision-camera and plugin

* Code format

* Rename param

* Use latest-plugin

* Remove fps param from camera view

* Change confidenceThreshold to number

* API change for results structure

* Refactor fps to be checked inside hook

As of vision-camera 3.9.1 our camera feed is stuttering when calling the runAtTargetFps function inside the useFrameProcessor hook.
So, what I did here is to track the time and skip the frames that are received before the target fps is reached.

* Remove updates of non-camera related

* Update comment

* Code format

* Snapshot updates

* Revert changes to ios e2e

* Add a log for the average time it takes a frame to be processed

* Use release version of plugin

* Add a patch for runAsync to work in release builds

* Update react-native-worklets-core to 0.4.0

* Use latest plugin version

* Add a shift method to worklet arrays

* Use latest vision-plugin

This makes use of .shift() in worklet array and depends on the previous patch.

* Set result timestamp and show age of result in debug mode

* Fix an error with timestamp being undefined

* Remove log

* Use latest vision plugin

* Change result timestamp to pink

* Comment

---------

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
2024-03-27 00:47:43 +01:00
Ken-ichi Ueda
b397d0d4f5 Android e2e tests were failing when obs deleted status disappeared too quickly 2024-03-26 15:19:40 -07:00
Johannes Klein
4e32f10659 Evidence sheet UI (#1288)
* Replace header

* Update evidence modal

* Update padding and margin
2024-03-18 14:27:22 +01:00
Amanda Bullington
bb6a180527 Observation deletion on MyObservations (#1082)
* Delete local & remote observations on MyObs; show progress

* Update tests & add test for delete hook

* Fix test failures

* Add tests for deletion strings in Toolbar; add test for multiple deletion

* Clear deletion text on toolbar when user navigates away from MyObs

* Add a check in e2e test to make sure observation was deleted
2024-01-24 17:32:11 -08:00
Johannes Klein
8e596525e4 Update shareIntoApp.yaml 2024-01-12 13:52:07 +01:00
Johannes Klein
5996688318 Share image into app bugfix (#1022)
* Switch the order of share manager or linking manager

* Maestro e2e test for sharing into app on iOS

* Update maestro flow

* Maestro e2e test to check if links into the app work

* Maestro e2e test android share into app
2024-01-11 18:43:52 +01:00
Amanda Bullington
42ab5eafc5 Use scrollTo to make sure comment and edit button are visible in e2e tests (#959) 2023-12-07 14:25:30 -08:00
Ken-ichi
cb6ce8b9ca Altered e2e test to wait for the correct comments count to be visible (#911) 2023-11-28 17:02:21 -08:00
Amanda Bullington
7de3790230 Performance: move upload reducer out of ObsEditProvider into MyObservationsContainer (#879)
* Move upload functionality into MyObservations, out of ObsEditProvider

* Move upload into helper function

* Fixes for ObsEdit -> MyObs flow

* Progress on making uploads faster

* Update performance test

* Fix toolbar progress

* Fix tests for observation upload flow

* Fixes from code review; fix e2e test for signed in user by bypassing permission gate

* Hide sign up test when keyboard visible; fixes Android e2e test

* Comment out permissions code in e2e test to see if it's only needed locally

* Comment out permissions gate for signed out user iOS

* Use focused hook to stop ObsEdit from rerendering while user is on other screens

* Restore reassure in branch

* e2e code cleanup
2023-11-15 11:40:11 -08:00
Ken-ichi
b7bf5fd950 Minor changes to e2e testing (#814)
* Removed sign in test since the obs creation test already signs in
* Renamed two remaining test files to signedIn and signedOut to reflect the
  different conditions that they test
* Add a check to wait for comments count component after uploading an observation

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2023-10-05 10:18:39 -07:00
Ken-ichi Ueda
572c9e0061 Reduce e2e flakiness with a different matcher
The substantive bit here is using a test ID instead of a string to match an
element on My Observations. Rotating INatIconButton isn't necessary but it
seemed reusable to me and could easily be mocked if it becomes a problem due
to infinite animation.
2023-09-29 11:48:18 -07:00
Ken-ichi Ueda
0bb3056c45 Work around Save Password blocking problem in e2e for iOS 2023-09-19 18:20:52 -07:00
Johannes Klein
ba0016365f Crud e2e (#696)
* Update comment

* Scaffold for e2e test

* Upload observation

* Update the observation by adding a comment

* Checking that comment appears

* Delete the observation

* Check that the comment is added succesfully

* Do not invalidate searchObservations query cache after observation deletion

* Update test IDs

* Script to check if e2e test user has observations

* Log out api response

* Increase default test timeout
2023-09-13 13:48:50 +02:00
Amanda Bullington
d58415dd27 UI for side menu (#668)
* Update side menu

* UI for side menu

* Add placeholder components; adjust for small screen sizes

* Code cleanup

* Update snapshots

* Query for second username element in e2e test

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2023-06-26 10:34:51 -07:00
Johannes Klein
6a4b31ed53 Upgrade jest to 28, detox to 20, breaking changes 2023-04-24 13:12:36 +02:00
Amanda Bullington
bbc5b9d67d MyObservations refactor (#510)
* WIP: very rough start at pulling state up into a container for MyObservations

I made a parallel MyObservations component and container so ObservationViews
can still be used as a working reference, but the ultimate goal here is to
focus MyObservations on presentation, and pull state and other business logic
up into a container component. This should make MyObservations a bit more
testable and clean up a very large and confusing file.

I'm also trying to move away from a generalized representation of observations
on all screens, which is why I want to name it MyObservations and not
ObservationViews. MyObservations has a lot of unique functionality that we
won't need elsewhere, and we can modularize stuff when we need to use it in
multiple places.

* UI updates for header, toolbar, empty component

* Add pressable component and login sheet

* UI improvements; get infinite scroll working

* UI improvements & additions for empty screen & bottom sheet

* Show login sheet when a user presses sync but is not logged in

* Fix backdrop close for AddObsModal

* Move UI elements to MyObservations

* Fix unit tests for MyObservations

* Fix for login sheet

* Set header height to a different height on Android to account for safe area

* Fix failing tests & rerender of user icon in navbar

* Remove scientific name from DisplayTaxonName to match Figma UI

* Set height above toolbar dynamically for sticky toolbar

* Add prop to display or hide second name in DisplayTaxonName

* Use RN styling to style grid view for MyObs flatlist

* Fix failing project obs test

* Create separate ToolbarContainer to separate presentation from logic; fix upload count

* Merge main and show onboarding based on user's total obs count

* Fix display taxon name styling and remove header fade on iOS

* Add header text for 0 observations, logged out state

* Update infinite scroll to 50 obs at a time; make loading wheel show faster

* Add uploaded status to toolbar

* Apply bandaid fix to stop Android from crashing on start

* Start adding new icons to MyObs

* Add circular progress; show upload icons at correct times during upload

* Add disabled props for accessibility state

* Fix tests; update snapshots

* Code cleanup

* Code cleanup & add inaturalist icon

* Fix merge conflict and add icon

* Add inaturalist icon

* Fix navigation to obs list and toolbar status when upload completes

* Move showLoginSheet code to MyObsContainer

* Fix toolbar status text

* Sync toolbar with upload status progress

* Clear toolbar after nav

* Tests passing

* Update e2e test

* Target login button in e2e tests

* Fix failing e2e tests with new testID for login button

* Update button snapshot to include new testID

---------

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
2023-03-14 10:54:33 -07:00
Ken-ichi Ueda
b30bb955c8 Re-arrange deck chairs; enable manual trigger for e2e workflows 2023-02-01 22:02:14 -08:00
Ken-ichi Ueda
bd0d0953f7 Adjust test IDs to fix e2e tests 2023-02-01 11:16:22 -08:00
Amanda Bullington
a163e82ef8 Create e2e sign in test (#356)
* Add e2e test to log in a test user

* Add config variables to .env.example

* Add e2e user credentials to .env created for workflow

* Fix newline typo in workflow file

* Change ios e2e to run only on push to main as well

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2023-01-16 17:49:01 +01:00
Johannes Klein
7214896479 Add comment 2022-12-23 17:30:50 +01:00
Johannes Klein
35defd8c07 Update addObservationWithoutData.e2e.js 2022-12-17 19:34:30 +01:00
Johannes Klein
ce949a726c Update addObservationWithoutData.e2e.js 2022-12-17 17:54:15 +01:00
Johannes Klein
fc9f028377 Update test launch setup 2022-12-17 16:16:51 +01:00
Johannes Klein
8d197e8e08 Increase test timeout 2022-12-16 13:51:20 +01:00
Johannes Klein
0480b757ec Remove second test 2022-12-14 17:43:57 +01:00
Ken-ichi Ueda
a72f500cf7 Revert "Adds acc label for new obs button, use that in e2e test"
This reverts commit 1656d031e0.
2022-12-13 14:55:06 -08:00
Ken-ichi Ueda
1656d031e0 Adds acc label for new obs button, use that in e2e test 2022-12-13 13:52:14 -08:00
Johannes Klein
f430ac3470 Wait for camera options button 2022-12-12 16:23:11 +01:00
Johannes Klein
9f49af7258 Add another test for navigating to login screen 2022-12-12 16:22:05 +01:00
Johannes Klein
2be152ea9b Add testIDs to the other expected elements 2022-12-12 12:17:41 +01:00
Johannes Klein
5174c75bc7 Update test matcher to accommodate possible splash screen in future 2022-12-05 18:09:06 +01:00
Johannes Klein
5bcbf9d505 Create addObservationWithoutData.e2e.js 2022-12-03 13:16:29 +01:00
Johannes Klein
8ae7f7199b Add detox configs 2022-12-03 13:16:16 +01:00