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

Run integration tests separately from unit tests #18304

Merged
merged 4 commits into from
Jan 5, 2024

Conversation

ilmotta
Copy link
Contributor

@ilmotta ilmotta commented Dec 26, 2023

Fixes #18112

Summary

Run Clojure integration tests separately from unit tests in the CI.

Why?

  1. Our integration tests generate a lot more log and noise than unit tests. When a unit or integration test fails, it's harder for the developer to spot what failed. Having separate steps in the pipeline makes this process easier.
  2. During development, some devs run unit and integration tests using make test-watch, which re-runs the slow integration tests alongside unit tests. The dev can control the namespace regex that decides which test namespaces to run, but there's no easy way to watch only unit tests or only integration tests.

Changelog:

  • make test still exists, so if you have been using it, as well as make test-watch, they should all work exactly the same.
  • [Changed] As part of the check stage, Jenkins will run Lint and Unit Tests in parallel. Integration Tests run later because running them at the same time as Unit Tests caused errors (see https://ci.status.im/blue/organizations/jenkins/status-mobile%2Fprs%2Ftests/detail/PR-18304/2/pipeline).
  • [Added] make unit-test and make unit-test-watch run unit tests only. Watching all unit tests is faster now because we ignore integration tests and we only compile shadow-cljs :mock target once. We are at approximately 10-15s to re-run all unit tests after saving a watched file, depending on your hardware. If you change mocks.js_dependencies.cljs, you must re-run the make target.
  • [Added] make integration-test and make integration-test-watch run integration tests only. These are much slower than the unit tests.

Original idea from @J-Son89 👍

Areas that may be impacted

Most definitely nothing for production code.

Steps to test

Of course the Jenkins output since we're changing the pipeline, but you can also run the new make targets locally to check.

status: ready

@ilmotta ilmotta self-assigned this Dec 26, 2023
@ilmotta ilmotta requested a review from jakubgs as a code owner December 26, 2023 15:03
@status-im-auto
Copy link
Member

status-im-auto commented Dec 26, 2023

Jenkins Builds

Click to see older builds (29)
Commit #️⃣ Finished (UTC) Duration Platform Result
e89df26 #1 2023-12-26 15:06:02 ~2 min tests 📄log
✔️ e89df26 #1 2023-12-26 15:10:54 ~7 min android 🤖apk 📲
✔️ e89df26 #1 2023-12-26 15:11:39 ~7 min android-e2e 🤖apk 📲
✔️ e89df26 #1 2023-12-26 15:15:04 ~11 min ios 📱ipa 📲
4df972e #2 2023-12-26 15:35:04 ~2 min tests 📄log
✔️ 4df972e #2 2023-12-26 15:38:12 ~5 min ios 📱ipa 📲
✔️ 4df972e #2 2023-12-26 15:40:03 ~7 min android-e2e 🤖apk 📲
✔️ 4df972e #2 2023-12-26 15:40:29 ~7 min android 🤖apk 📲
✔️ 135413f #3 2023-12-26 17:03:30 ~4 min tests 📄log
✔️ 996926e #4 2023-12-26 17:10:05 ~5 min tests 📄log
✔️ 996926e #4 2023-12-26 17:10:59 ~6 min android-e2e 🤖apk 📲
✔️ 996926e #4 2023-12-26 17:11:31 ~7 min android 🤖apk 📲
✔️ 996926e #4 2023-12-26 17:17:50 ~13 min ios 📱ipa 📲
✔️ 1b935a8 #5 2023-12-26 17:57:54 ~5 min ios 📱ipa 📲
✔️ 1b935a8 #5 2023-12-26 17:58:00 ~5 min tests 📄log
✔️ 1b935a8 #5 2023-12-26 17:59:05 ~6 min android-e2e 🤖apk 📲
✔️ 1b935a8 #5 2023-12-26 18:00:13 ~7 min android 🤖apk 📲
✔️ 9c3459a #6 2023-12-27 15:39:52 ~5 min tests 📄log
✔️ 9c3459a #6 2023-12-27 15:41:53 ~7 min android 🤖apk 📲
✔️ 9c3459a #6 2023-12-27 15:42:06 ~7 min android-e2e 🤖apk 📲
✔️ 9c3459a #6 2023-12-27 15:46:39 ~12 min ios 📱ipa 📲
✔️ 8270947 #7 2023-12-27 17:38:12 ~5 min tests 📄log
✔️ 8270947 #7 2023-12-27 17:38:19 ~5 min ios 📱ipa 📲
✔️ 8270947 #7 2023-12-27 17:38:58 ~6 min android-e2e 🤖apk 📲
✔️ 8270947 #7 2023-12-27 17:40:21 ~7 min android 🤖apk 📲
✔️ bcf0af0 #8 2024-01-03 18:42:01 ~5 min tests 📄log
✔️ bcf0af0 #8 2024-01-03 18:42:48 ~6 min ios 📱ipa 📲
✔️ bcf0af0 #8 2024-01-03 18:43:08 ~6 min android 🤖apk 📲
✔️ bcf0af0 #8 2024-01-03 18:43:55 ~7 min android-e2e 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 3c19360 #9 2024-01-05 17:27:06 ~6 min tests 📄log
✔️ 3c19360 #9 2024-01-05 17:29:20 ~9 min android-e2e 🤖apk 📲
✔️ 3c19360 #9 2024-01-05 17:29:20 ~9 min ios 📱ipa 📲
✔️ 3c19360 #9 2024-01-05 17:29:38 ~9 min android 🤖apk 📲
✔️ b2ad9e3 #10 2024-01-05 18:35:47 ~5 min tests 📄log
✔️ b2ad9e3 #10 2024-01-05 18:36:20 ~5 min ios 📱ipa 📲
✔️ b2ad9e3 #10 2024-01-05 18:38:05 ~7 min android-e2e 🤖apk 📲
✔️ b2ad9e3 #10 2024-01-05 18:38:13 ~7 min android 🤖apk 📲

@ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch 3 times, most recently from 996926e to 1b935a8 Compare December 26, 2023 17:52
@ilmotta ilmotta changed the title [WIP] Run integration tests separately from unit tests Run integration tests separately from unit tests Dec 26, 2023
@siddarthkay siddarthkay requested a review from yakimant December 27, 2023 01:35
Copy link
Contributor

@siddarthkay siddarthkay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me!

Copy link
Contributor

@ajayesivan ajayesivan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work 🎉 !

Makefile Outdated
Comment on lines 342 to 345
yarn install
yarn shadow-cljs compile mocks && \
yarn shadow-cljs compile test && \
node --require ./test-resources/override.js target/test/test.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code duplication with unit-test and integration-test.

I would move to a shared task or script.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yakimant, I agree, and I was anticipating this kind of comment in this PR. Since you rejected the PR I will refactor. Thanks for the feedback 👍🏼

[Just my opinion] I personally don't like makefiles to create interfaces for development, it's always the same story, they end up being a layer of indirection to scripts. Now, using make to help efficiently build source code is a different story, but that's not what our targets do. I worked in a few projects that used makefiles only for that purpose and the rest were all scripts following some common conventions. It was pretty nice! Eventually one project evolved to have an internal CLI, but okay, that can be overkill for us now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't you like make for the purpose of interface for usefull scripts?
I find it useful - you just type make and you see all the options.

What would be the alternative?

You can always place your code to the scripts and call them directly if you don't want to use make.

Copy link
Contributor Author

@ilmotta ilmotta Dec 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for asking @yakimant. First of all, I don't feel strong about replacing make, but I felt like sharing anyway. Subconsciously I probably just wanted to hear your perspective, which I do in fact :)

What would be the alternative?

The alternative could be just (https://github.com/casey/just), which is described as a command runner (which is what we use make for in status-mobile). I've been trying to use it in personal projects to get the feeling of the good and bad things. So far, it's quite smooth coming from make.

I find it useful - you just type make and you see all the options.

Do you mean completion at point? Yes, that's very useful. Interestingly, our Makefile contains cryptic code to support make help, that comes OTB with just.

Another alternative for a group of Clojure devs is to replace scripts and/or some/all make targets with babashka behind a CLI (for discoverability). This wouldn't fly well for others that don't know Clojure. It could be in another language. As I said before, it sounds overkill, but it could promote a better DX over time (which was the case in my past experience)

In my systems I don't even have make available by default, although it's an essential piece of software, nowadays I also install just.

You can always place your code to the scripts and call them directly if you don't want to use make

Yes, but then it's like I said, from my personal perspective, make becomes an unnecessary piece of software when it's used mostly as an indirection layer to scripts.

If we only used scripts and a basic CLI for discoverability (optional) it would work just as well, or at lest that's my theory :)

Makefile Outdated
Comment on lines 351 to 353
yarn install
nodemon --exec 'yarn shadow-cljs compile mocks && yarn shadow-cljs compile test && node --require ./test-resources/override.js target/test/test.js' -e cljs
yarn shadow-cljs compile mocks && \
nodemon --exec 'yarn shadow-cljs compile test && node --require ./test-resources/override.js target/test/test.js' -e cljs
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, code duplication. Better to extract and parametrise.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yakimant, please, have a look at commit to give your second review pass 9c3459a. I could remove a substantial amount of code duplication between all clojure test targets. The small duplication between default target variables seems alright to me, but is that good enough for you?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @ilmotta, I would move export TARGET := clojure it possible too.
If not - I'm ok to merge.

@yakimant
Copy link
Member

Good job! Wish status-go unit and integration tests are also split one day!

@ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch from 1b935a8 to 9c3459a Compare December 27, 2023 15:34
Makefile Outdated
yarn shadow-cljs compile mocks && \
nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs

test: export TARGET := clojure
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if you move this to subtasks too?
Will it work?

Copy link
Contributor Author

@ilmotta ilmotta Dec 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea and it does work locally. Pushed now, hopefully it works in the CI too.

Edit: All green ;)

@ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch from 9c3459a to 8270947 Compare December 27, 2023 17:32
Copy link
Member

@yakimant yakimant left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks much better now, thanks!

Copy link
Contributor

@J-Son89 J-Son89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙌

@J-Son89
Copy link
Contributor

J-Son89 commented Dec 29, 2023

@cammellos - is it possible to make this part of the CI process for Status Go afterwards? I don't mean technically as I'm sure we can figure that out, but more that we have agreement to add it? 🤔

@yakimant
Copy link
Member

yakimant commented Jan 3, 2024

@J-Son89, that's interesting! Do you want to run status-mobile tests on each status-go changes? Would be cool to run status-desktop tests too.

@J-Son89
Copy link
Contributor

J-Son89 commented Jan 3, 2024

Yep exactly. Essentially we have contract tests then for the mobile client. Would be great if Desktop did the same too! 🙏

Copy link
Member

@jakubgs jakubgs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we are creating too many targets. If you want -watch targets you can just make the normal target accept a WATCH(or some other name) parameter and then just create aliases using it:

test: WATCH ?= false
ifeq ($(WATCH), false)
	some thing
else
	some other thing
endif

test-watch: WATCH := true
test-watch: test

ci/Jenkinsfile.tests Show resolved Hide resolved
nodemon --exec 'yarn shadow-cljs compile mocks && yarn shadow-cljs compile test && node --require ./test-resources/override.js target/test/test.js' -e cljs
_clojure-test: export TARGET := clojure
_clojure-test:
yarn install && \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this start with underscore? And it's missing a help message.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the name should be test-clojure if we want to have consistent prefixes.

Copy link
Contributor Author

@ilmotta ilmotta Jan 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this start with underscore? And it's missing a help message.

There are other targets prefixed with underscore, so I used the same idea to mean "private" targets that shouldn't be used directly. Edit: Being "private", I preferred not to document them, but I can add something no problem.

And the name should be test-clojure if we want to have consistent prefixes.

Good point, will do.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved by bcf0af0

I kept the underscore prefix like other targets and I didn't add any documentation. The "public" targets have a description though. Is that okay for you?

Makefile Outdated
Comment on lines 345 to 346
_clojure-test-watch: export TARGET := clojure
_clojure-test-watch:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this start with underscore? And it's missing a help message.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And should be called test-clojure-watch or similar to have the same prefix as other test targets.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, why do we need a separate target? Why can't you just have a variable that decides if it's a watch version or not?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's a matter of convenience @jakubgs. Passing parameters to make is not as convenient as using the auto-complete of available targets and just pressing tab and enter. Obviously, this leads to a bit of code duplication.

We can have a variable for sure, a matter of taste :)

Copy link
Contributor Author

@ilmotta ilmotta Jan 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved by bcf0af0

Now the dev must pass WATCH=true to the test targets they care about watching files and the Makefile is more DRY now.

Also renamed the targets to be more consistent. I did not rename the component test targets. I consider that out of scope for this PR.

Makefile Outdated Show resolved Hide resolved
@ilmotta
Copy link
Contributor Author

ilmotta commented Jan 3, 2024

I think we are creating too many targets. If you want -watch targets you can just make the normal target accept a WATCH(or some other name) parameter and then just create aliases using it:

test: WATCH ?= false
ifeq ($(WATCH), false)
	some thing
else
	some other thing
endif

test-watch: WATCH := true
test-watch: test

@jakubgs, unfortunately the code you suggested doesn't work. The conditional ifeq only takes effect if we call make from make (as in $(MAKE)), not when test is a prerequisite of test-watch.

Here's an example:

foo: export TARGET := clojure
foo: export WATCH ?= false
foo:
ifeq ($(WATCH), true)
	@echo watch=true
else
	@echo watch=false
endif

bar: export WATCH := true
bar: foo
make foo            # => prints watch=false
make bar            # => prints watch=false
make foo WATCH=true # => prints watch=true
make bar WATCH=true # => prints watch=true

If we change to recursive make call it works.

bar:
	$(MAKE) foo WATCH=true

So as we can see the variable doesn't propagate. Therefore, the solution is to either drop these targets *-watch and let the dev pass WATCH=true or call make from make. I'm leaning on the side of removing test-unit-watch and test-integration-watch and rely on the dev to pass WATCH=true.

@ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch from 8270947 to bcf0af0 Compare January 3, 2024 18:36
Copy link
Member

@jakubgs jakubgs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ilmotta thanks for testing that. That is indeed annoying, make is such an obtuse tool to use.

I guess adding a test-watch target that uses the $(MAKE) trick is fine for the sake of discoverability of such command in the make help message.

@ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch from bcf0af0 to 3c19360 Compare January 5, 2024 17:20
@status-im-auto
Copy link
Member

81% of end-end tests have passed

Total executed tests: 48
Failed tests: 7
Expected to fail tests: 2
Passed tests: 39
IDs of failed tests: 702809,702957,702948,702786,702845,702958,703629 
IDs of expected to fail tests: 703503,702808 

Failed tests (7)

Click to expand
  • Rerun failed tests

  • Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957

    Device 2: Find `Text` by `xpath`: `//android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]`
    Device 2: Wait for element `Button` for max 120s and click when it is available

    Test setup failed: activity_center/test_activity_center.py:409: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958

    Test setup failed: activity_center/test_activity_center.py:409: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809

    Test setup failed: critical/chats/test_public_chat_browsing.py:835: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    2. test_community_hashtag_links_to_community_channels, id: 702948

    Test setup failed: critical/chats/test_public_chat_browsing.py:835: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    3. test_community_mentions_push_notification, id: 702786

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]
    Device 2: Wait for element Button for max 120s and click when it is available

    Test setup failed: critical/chats/test_public_chat_browsing.py:835: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    4. test_community_leave, id: 702845

    Test setup failed: critical/chats/test_public_chat_browsing.py:835: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    5. test_community_join_when_node_owner_offline, id: 703629

    Test setup failed: critical/chats/test_public_chat_browsing.py:835: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:428: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element 
    

    [[Can't join a community if admin goes offline, https://github.com//issues/17678]]

    Expected to fail tests (2)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:324: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    Device sessions

    Passed tests (39)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    7. test_community_message_delete, id: 702839
    Device sessions

    8. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    10. test_community_message_edit, id: 702843
    Device sessions

    11. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    8. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_mute_chat, id: 703495
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_reactions, id: 703202
    Device sessions

    5. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    @ilmotta ilmotta force-pushed the split-integration-tests-from-unit-tests branch from 3c19360 to b2ad9e3 Compare January 5, 2024 18:30
    @ilmotta ilmotta merged commit b4640da into develop Jan 5, 2024
    6 checks passed
    @ilmotta ilmotta deleted the split-integration-tests-from-unit-tests branch January 5, 2024 18:47
    yevh-berdnyk pushed a commit that referenced this pull request Jan 5, 2024
    - make test still exists, so if you have been using it, as well as make
      test-watch, they should all work exactly the same.
    - [Changed] As part of the check stage, Jenkins will run Lint and Unit Tests
      in parallel. Integration Tests run later because running them at the same
      time as Unit Tests caused errors.
    - [Added] "make unit-test" and "make unit-test-watch" run unit tests only.
      Watching all unit tests is faster now because we ignore integration tests and
      we only compile shadow-cljs :mock target once. We are at approximately 10-15s
      to re-run all unit tests after saving a watched file, depending on your
      hardware. If you change mocks.js_dependencies.cljs, you must re-run the make
      target.
    - [Added] "make integration-test" and "make integration-test-watch" run
      integration tests only. These are much slower than the unit tests.
    
    Fixes #18112
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Separate Integration tests into two separate make commands.
    8 participants