Commit Graph

1548 Commits

Author SHA1 Message Date
Yevheniia Berdnyk 734abc221c
e2e: tests fixes 2023-12-27 00:50:01 +02:00
Icaro Motta 0b4a1545ae
Fix component tests, upgrade Jest & friends, and a few other goodies (#18276)
Fix all component tests after the latest RN upgrade.

Fixes https://github.com/status-im/status-mobile/issues/18157
Closes https://github.com/status-im/status-mobile/pull/18235

Dependency changes

- Upgraded Jest: from 26.6.3 to latest 29.7.0.
- Upgraded @testing-library/jest-native: from 5.3.0 to latest 5.4.3
- Upgraded @testing-library/react-native: from 11.5.4 to 12.4.2
- Removed explicit dependency on jest-circus, this is now the default test
  runner.
- Removed explicit dependency on jest-environment-node. This is handled by the
  package manager.
- Added jest-silent-reporter at version 0.5.0.

### Why component tests were failing?

Many tests were failing because we were using RN Testing Library (RNTL) in an
unreliable fashion. With the recent library upgrades, the unreliability was
excerbated. Other times, the tests were incorrectly arranging data.

### with-redefs does not work with async code

Generally speaking, with-redefs should not be used with async code, assume the
worst. The scope of the macro will cease to exist by the time the async code
runs. In many tests we were using with-redefs, then calling render, but for some
components that use use-effect, JS timers, animations, etc it's unreliable and
were the reason for failures.

It's easy to reproduce too:

```clojure
(defn foo []
  :foo)

(foo)
;; => :foo

(with-redefs [foo (constantly :bar)]
  (foo))
;; => :bar

(js/setTimeout
 (fn []
   (tap> [:calling-foo (foo)]))
 100)
;; Taps [:calling-foo :foo]
;; As you would expect, when running without with-redefs, it prints :foo.

;; So far so good, but whatch what happens with async code:

(with-redefs [foo (constantly :bar)]
  (js/setTimeout
   (fn []
     (tap> [:calling-foo (foo)]))
   100))
;; Taps [:calling-foo :foo]
;; ====> PROBLEM: Taps :foo, not :bar as one might expect
```

### Not waiting on wait-for

When test-helpers.component/wait-for is used, subsequent assertions/etc should
be done after the promise returned by wait-for is resolved. But remember to not
perform side-effects inside the wait-for callback (check out the docs
https://callstack.github.io/react-native-testing-library/docs/api#waitfor).
Most, if not all of our usages of wait-for were not waiting.

#### Improvement 1 - Silence Jest on demand

If you need to re-run component tests frequently, you may want to reduce the
output verbosity. By passing JEST_USE_SILENT_REPORTER=true to make
component-test or make component-test-watch you will see a lot less noise and be
able to focus on what really matters to you.

#### Improvement 2 - Selectively focus/disable tests

Because of our need to first compile CLJS to JS before running tests via Jest,
we couldn't easily skip or focus on specific tests. From this commit onwards, we
should never again have to change the list of requires in files core_spec.cljs.
Commenting out required namespaces gives a bad DX because it causes constant
rebasing issues.

#### Improvement 3 - Translations now work as in prod code (but only English)

Translations performed by *-by-translation-text can be done now without any
workaround under the hood. The query functions are now linted just like
i18n/label, which means static translation keywords must be qualified with :t/,
which is good for consistency.
2023-12-26 11:58:23 -03:00
Yevheniia Berdnyk 5d21b1f5ae
e2e: fix for getting public key 2023-12-24 01:47:16 +02:00
Yevheniia Berdnyk 5ec5838657
e2e: added validation of encoded data in community and profile urls 2023-12-21 19:00:29 +02:00
Tetiana Churikova ec41b30794
e2e: updated profile view (#18203) 2023-12-20 21:29:08 +01:00
yqrashawn 4bc5efb855
fix: universal link regex (#18020)
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-12-20 11:25:09 +08:00
Yevheniia Berdnyk 711e64bc75
e2e: android14 2023-12-20 01:51:58 +02:00
flexsurfer 602b27105b
FINAL BOSS! rename status-im2 to status-im (#18241) 2023-12-19 20:59:07 +01:00
Ibrahem Khalil 07d8bf0d19
Share community via URL with any privileges (#18131) 2023-12-15 14:29:13 +02:00
Yevheniia Berdnyk 3ddb76faed
e2e: fixes 2023-12-13 02:28:24 +02:00
Siddarth Kumar 761a7df06f
upgrade react-native to 0.72.5 (#17241)
This commit does many things :
- Upgrade `react-native ` to `0.72.5`
- Upgrade `react-native-reanimated` to  `3.5.4`
- Upgrade `react-native-navigation` to `7.37.0`
- `ndkVersion` has been bumped to `25.2.9519653`
- `cmakeVersion` has been bumped to `3.22.1`
- `kotlinVersion` has been bumped to `1.7.22`
- `AGP` has been bumped to `7.4.2`
- `Gradle` has been upgraded to `8.0.1`
- Android `CompileSDK` and `TargetSDK` have been bumped to 33
- `@react-native-async-storage/async-storage` has been upgraded to `1.19.3`
- `@walletconnect/client` has been nuked
- some of the old `react-native-reanimated` code has been nuked
- `react-native-keychain` fork has been replaced with `8.1.2`

- On Android we are currently relying on `Hermes` Engine.
- On iOS we are currently relying on `JSC`
- We are not enabling new architecture for now (I have plans for that in the future) ref: https://github.com/status-im/status-mobile/issues/18138

IOS only PR : https://github.com/status-im/status-mobile/pull/16721
Android only PR : https://github.com/status-im/status-mobile/pull/17062

- `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
2023-12-11 21:22:23 +05:30
BalogunofAfrica f155d95d92
fix: 1:1 chat concerns (#17795) 2023-12-11 14:42:41 +01:00
Yevheniia Berdnyk 6093d56c90
e2e: increased wait time for PN and CR 2023-12-07 18:04:45 +02:00
Yevheniia Berdnyk 3b5fe36717
e2e: added test for edit/delete message when offline 2023-12-06 23:19:17 +02:00
Yevheniia Berdnyk 4376ee8908
e2e: disabled checks because of issues with restored contacts and channel links 2023-12-06 16:57:31 +02:00
Yevheniia Berdnyk 6b612588c4
e2e: skipped checks with bugs 2023-12-05 20:54:09 +02:00
Yevheniia Berdnyk 04dee8be45
e2e: updated data for waku backup test 2023-12-01 12:28:26 +02:00
Yevheniia Berdnyk b7f675aa5c
e2e: fix for deep links test 2023-11-30 01:09:42 +02:00
Yevheniia Berdnyk 0546a87e9a
e2e: deep links tests added 2023-11-29 14:09:31 +02:00
Yevheniia Berdnyk c7e230d070
e2e: changed test order 2023-11-28 12:05:47 +02:00
Yevheniia Berdnyk e6a7c420a2
e2e: APK upload time limit increased 2023-11-23 12:34:30 +02:00
Icaro Motta c1dcd7a764
Introduce malli library (#17867)
This commit is the foundational step to start using malli
(https://github.com/metosin/malli) in this project.

Take in consideration we will only be able to realize malli's full power in
future iterations.

For those without context: the mobile team watched a presentation about malli
and went through a light RFC to put everyone on the same page, among other
discussions here and there in PRs.

To keep things relatively short:

1. Unit, integration and component tests will short-circuit (fail) when
   inputs/outputs don't conform to their respective function schemas (CI should
   fail too).
2. Failed schema checks will not block the app from initializing, nor throw an
   exception that would trigger the LogBox. Exceptions are only thrown in the
   scope of automated tests.
3. There's zero performance impact in production code because we only
   instrument. Instrumentation is removed from the compiled code due to the
   usage of "^boolean js.goog/DEBUG".
4. We shouldn't expect any meaningful slowdown during development.

**What are we instrumenting in this PR?**

Per our team's agreement, we're only instrumenting the bare minimum to showcase 2 examples.

- Instrument a utility function utils.money/format-amount using the macro
  approach.
- Instrument a quo component quo.components.counter.step.view/view using the
  functional approach.

Both approaches are useful, the functional approach is powerful and allow us to
instrument anonymous functions, like the ones we pass to subscriptions or event
handlers, or the higher-order function quo.theme/with-theme. The macro approach
is perfect for functions already defined with defn.

**I evaluated the schema or function in the REPL but nothing changes**

- If you evaluate the source function, you need to evaluate schema/=> or
  schema/instrument as well.
- Remember to *var quote* when using schema/instrument.
- You must call "(status-im2.setup.schema/setup!)" after any var is
  re-instrumented. It's advisable to add a keybinding in your editor to send
  this expression automatically to the CLJS REPL, or add the call at the end of
  the namespace you are working on (similar to how some devs add "(run-tests)"
  at the end of test namespaces).

**Where should schemas be defined?**

For the moment, we should focus on instrumenting quo components, so define each
function schema in the same namespace as the component's public "view" var.

To be specific:

- A schema used only to instrument a single function and not used elsewhere,
  like a quo component schema, wouldn't benefit from being defined in a separate
  namespace because that would force the developer to constantly open two files
  instead of one to check function signatures.
- A common schema reused across the repo, like ":schema.common/theme" should be
  registered in the global registry "schema.registry" so that consumers can just
  refer to it by keyword, as if it was a built-in malli schema.
- A common schema describing status-go entities like message, notification,
  community, etc can be stored either in the respective
  "src/status_im2/contexts/*" or registered globally, or even somewhere else.
  This is yet to be defined, but since I chose not to include schemas for them,
  we can postpone this guideline.
2023-11-18 11:04:48 -03:00
Jamie Caprani 2e2d15adfb
chore: add floating button page component (#17737)
Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
2023-11-17 09:16:55 -08:00
Yevheniia Berdnyk 1d1d586223
e2e: added back status link opening 2023-11-17 18:09:57 +02:00
Yevheniia Berdnyk 2e0643fabe
e2e: fixes 15.11 2023-11-16 15:54:35 +02:00
Jakub Sokołowski 5ceb7c2215
tests/appium: use requests for fetching APK
Also add more context for the error.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-15 18:08:11 +01:00
Jakub Sokołowski 2043e9353b
tests/appium: refactor conftest.py to be more readable
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-15 18:08:10 +01:00
Yevheniia Berdnyk 83a7402210
e2e: fix for terminated session 2023-11-13 02:27:36 +02:00
Yevheniia Berdnyk 4eda8bb6b3
e2e: temp fix for opening a link in Status 2023-11-08 18:47:56 +02:00
Yevheniia Berdnyk 422004f146
e2e: fix for creating a new user 2023-11-07 14:43:30 +02:00
Dmitri Akatov a5bb95cd18
add translation linting to the "make lint" pipeline. (#17820) 2023-11-07 11:33:59 +01:00
Yevheniia Berdnyk f1de077d9d
e2e: making 2 tests independent 2023-11-03 18:02:16 +02:00
Yevheniia Berdnyk 579b382c44
e2e: fix for edit message with a mention 2023-11-02 12:38:26 +02:00
yqrashawn 859cb19886
fix(universal-link): more new link format, handle old link format (#17721)
Co-authored-by: pavloburykh <pavlo@status.im>
2023-11-02 15:31:49 +08:00
Nikolay 94a3e266a9
Edit derivation path (#17741) 2023-11-01 14:04:21 +01:00
Yevheniia Berdnyk 25381b601f
e2e: test for sending image with camera 2023-10-31 23:23:04 +02:00
Yevheniia Berdnyk 88b3d7d2e6
e2e: fix for app closed after closing gallery 2023-10-31 12:04:46 +02:00
Yevheniia Berdnyk 90d3a5a39d
e2e: test fixes 2023-10-31 02:21:52 +02:00
diana 071d8f0925
e2e: new link format 2023-10-23 11:26:53 +02:00
Yevheniia Berdnyk 17e9ce7513
e2e: added test for Add contact validation 2023-10-20 16:17:11 +03:00
Yevheniia Berdnyk 6436e82990
e2e: join community when node owner is offline 2023-10-20 16:05:21 +03:00
Yevheniia Berdnyk 7da899e29f
e2e: updated GH report and fixed 2 tests 2023-10-18 13:47:50 +03:00
Churikova Tetiana 6acae424d7
e2e: add new floating screen 2023-10-17 21:48:46 +05:30
Yevheniia Berdnyk 272e8e80d8
e2e: fixed issue with naming 2023-10-10 17:24:28 +03:00
Lungu Cristian b432aab701
Changes to onboarding/new-to-status (quo/fonts/spacings/copy) (#17562)
* fix: changes to onboarding/new-to-status (quo/fonts/spacings/copy)

* e2e: updated button  locator

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-10-09 10:45:28 +03:00
Yevheniia Berdnyk 7c1850b901
e2e: some fixes and moved old ui tests to a separate dir 2023-10-07 03:24:51 +03:00
Tetiana Churikova 5b765f873b
e2e: small alignments (#17477) 2023-10-03 14:53:57 +02:00
Yevheniia Berdnyk 70d6291c57
e2e: some todos and updates 2023-09-26 18:55:42 +03:00
Tetiana Churikova 5d6800cee0
e2e: update cython and pyyaml (#17297) 2023-09-19 13:52:30 +02:00
Yevheniia Berdnyk 2c52001e22
e2e: fixes 12.09 2023-09-12 16:46:49 +03:00
Yevheniia Berdnyk 7609a07cc2
e2e: fixes 6.09 2023-09-06 16:23:24 +03:00
Yevheniia Berdnyk 69aeffd943
e2e: removed deprecated metods usage 2023-09-06 12:48:57 +03:00
Yevheniia Berdnyk 726b76a290
e2e: split 1-1 chat test group 2023-09-06 12:30:17 +03:00
Yevheniia Berdnyk 56b13cbdca
e2e: updated join communities flow 2023-09-06 12:17:08 +03:00
Yevheniia Berdnyk 37af9d9b97
e2e: updated community channel element 2023-09-05 01:48:49 +03:00
Yevheniia Berdnyk 5647bb4ac9
e2e: fixes navigation, long press and so on 2023-09-01 18:21:03 +03:00
Yevheniia Berdnyk e1616ae514
e2e: split community and activity center tests to reduce time 2023-08-31 01:24:01 +03:00
Yevheniia Berdnyk 551ac22085
e2e: updated communities join flow (#17132) 2023-08-30 10:49:31 +02:00
Yevheniia Berdnyk a416267094
e2e: appium upgrade 2023-08-25 17:32:54 +03:00
Yevheniia Berdnyk 21be0ed16c
e2e: fixes 25.08 2023-08-25 15:59:51 +03:00
flexsurfer 8701f3545d
[#16864] Design review: messages home (#17050)
---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
Co-authored-by: Churikova Tetiana <tatiana@status.im>
2023-08-24 14:30:47 +02:00
Yevheniia Berdnyk 89c2b1c818
e2e: nightly fixes 23.08 2023-08-24 04:31:27 +03:00
Yevheniia Berdnyk 4dd5d88f0f
e2e: updated community tests 703086 and 702786 2023-08-22 21:15:14 +03:00
Yevheniia Berdnyk 92403f5d30
e2e: fix for navigation issue 2023-08-21 16:37:48 +03:00
Yevheniia Berdnyk 774687bef6
e2e: updated test_group_chat_mute_chat to unmute by time 2023-08-18 16:00:55 +03:00
Churikova Tetiana aecad2136e
e2e: starting to-dos 2023-08-17 05:09:19 +03:00
Yevheniia Berdnyk 625510d6c9
e2e: Added test for message with hashtag in communtiy channel 2023-08-10 18:09:25 +03:00
Yevheniia Berdnyk 8bab9f8f22
e2e: pulling geth log in teardown if setup is failed 2023-08-10 15:34:41 +03:00
Tetiana Churikova 5a3d886055
e2e: discover communities (#16957) 2023-08-09 18:14:42 +02:00
Yevheniia Berdnyk e5b6378e15
e2e: updated tests with new communitites creation flow 2023-08-04 01:37:33 +03:00
Yevheniia Berdnyk 049e958992
e2e: added test for markdown support (702809) 2023-08-02 21:53:03 +03:00
Yevheniia Berdnyk 3f433d6f19
e2e: group chat unread messages 2023-08-02 19:05:29 +03:00
Brian Sztamfater 21807cb761
feat: implement wallet graph component (#16789)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-08-01 11:10:16 -03:00
Yevheniia Berdnyk 96ff8ab382
e2e: fix for creating second user 2023-07-31 15:39:37 +03:00
Yevheniia Berdnyk ce08131c01
e2e: new pub key (#16779)
Co-authored-by: Churikova Tetiana <tatiana@status.im>
2023-07-27 13:14:09 +02:00
Omar Basem e49a3ab5cd
feat: category reorder component (#16719)
* feat: category reorder component

---------

Co-authored-by: Milad <mmilad.sanati@gmail.com>
2023-07-26 11:11:17 +04:00
Yevheniia Berdnyk 99dc79842d
e2e: nigthly fixes 24.07 2023-07-24 23:14:16 +03:00
Yevheniia Berdnyk eb3de978ce
e2e: mute chats 2023-07-24 17:43:44 +03:00
flexsurfer 00f39225ea
Do not show biometrics onboarding screen if biometric is not available (#16744)
* fix biometric screen

* updated e2e

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-07-24 13:06:35 +02:00
Churikova Tetiana 1b2ad33926
e2e: TimeoutException 2023-07-20 20:06:43 +03:00
Yevheniia Berdnyk 1d0186a12e
fix for airplane mode 2023-07-15 00:17:17 +03:00
Tetiana Churikova 7282ba04bc
e2e: fixes shell nav (#16545) 2023-07-12 11:21:39 +02:00
Yevheniia Berdnyk 362aa476ae
e2e: fix for nightly apk upload (#16517) 2023-07-07 11:08:13 +02:00
Yevheniia Berdnyk 26dcc16ea6
e2e: fix for endless apk upload + teardown 2023-07-06 17:47:35 +03:00
Tetiana Churikova c52bf965f7
e2e: more groups (#16483) 2023-07-05 11:55:40 +02:00
Yevheniia Berdnyk 8978e92042
e2e: nightly fixes 2023-07-04 20:26:05 +03:00
Yevheniia Berdnyk ef99bf2ad6
e2e: tests for reactions in community and group chats 2023-07-04 13:17:48 +03:00
Yevheniia Berdnyk ca2ed9d37e
e2e: fixes for backup users and unread indicator tests 2023-07-03 15:55:05 +03:00
Yevheniia Berdnyk 5f441dfa93
e2e: Reactions in 1-1 chats 2023-06-29 17:49:15 +03:00
Tetiana Churikova 3058ebe018
e2e: small adjustments (#16439) 2023-06-29 14:05:13 +02:00
Tetiana Churikova ba8c08650b
e2e: updated wait_to (#16416) 2023-06-28 14:27:57 +02:00
Yevheniia Berdnyk cd32806c96
e2e: Updated error message in 702783 2023-06-27 02:52:28 +03:00
Yevheniia Berdnyk fc52d5f062
e2e: added attempts for MaxRetryError handling 2023-06-26 11:12:53 +03:00
Yevheniia Berdnyk 0cb525aade
e2e: updated test_restore_multiaccount_with_waku_backup_remove_switch 2023-06-23 00:50:38 +03:00
Yevheniia Berdnyk 5b5a29a2e1
e2e: tests fixes 2023-06-20 03:42:14 +03:00
Rahul Pratap c80992b6bf
Update prettier config for the project. (#16303)
* Update prettier config for the project.

* Add prettier to make lint-fix.
2023-06-19 19:09:12 +05:30
Yevheniia Berdnyk cfefc2d734
e2e: fixes 2023-06-14 02:50:41 +03:00
Yevheniia Berdnyk 6f920afcf7
e2e: Fixes for jump-to 2023-06-13 06:24:21 +03:00
Yevheniia Berdnyk 032c254d19
e2e: Updated report 2023-06-08 15:47:36 +03:00
Yevheniia Berdnyk f3b5a9db67
e2e: Fixes for nightly failures 2023-06-08 05:06:43 +03:00