Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cometchat avatar

Cometchat Android V5 Testing

  • 6 installs
  • 70 repo stars
  • Updated June 23, 2026
  • cometchat/cometchat-skills

Writes tests for a CometChat Android v5 integration using JUnit and Mockito, Espresso UI tests, Maestro E2E, and CI integration.

About

This skill teaches how to write and run tests against a CometChat v5 Android integration, including mocking the SDK with Mockito/MockK, Espresso UI tests, and Maestro end-to-end tests. A developer uses it to add unit, UI, or E2E coverage and wire it into CI.

  • JUnit + Mockito/MockK SDK mocking and Espresso UI tests
  • Maestro E2E flows with CI integration

Cometchat Android V5 Testing by the numbers

  • 6 all-time installs (skills.sh)
  • Ranked #1,591 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cometchat/cometchat-skills --skill cometchat-android-v5-testing

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs6
repo stars70
Last updatedJune 23, 2026
Repositorycometchat/cometchat-skills

What it does

Writes tests for a CometChat Android v5 integration using JUnit and Mockito, Espresso UI tests, Maestro E2E, and CI integration.

Files

SKILL.mdMarkdownGitHub ↗
Companion skills: cometchat-android-v5-core covers init/login patterns you're testing;
cometchat-android-v5-components covers component APIs to assert against.

Purpose

This skill teaches how to write and run tests against a CometChat Android integration. Covers unit tests with JUnit + Mockito/MockK, UI tests with Espresso, E2E with Maestro, and CI integration.

---

Use this skill when

  • "Add tests for my CometChat integration"
  • "How do I mock CometChat in tests?"
  • "Set up E2E testing"
  • "CI pipeline for chat tests"

Do not use this skill when

  • Setting up the integration → use cometchat-android-v5-core
  • Diagnosing runtime issues → use cometchat-android-v5-troubleshooting

---

1. What to test vs what to skip

Worth testing:

  • Custom components you wrote (custom bubbles, headers, empty states)
  • Navigation logic triggered by CometChat events (push tap → deep-link)
  • Init/login lifecycle (init before login, already-logged-in skip)
  • Production auth token refresh logic
  • User-ID mapping (your auth system → CometChat UID)

Skip:

  • UIKit internals — that's CometChat's responsibility
  • Realtime delivery (A sends, B receives) — requires real servers, flaky
  • Presence/typing indicators — race-prone
  • Snapshot tests of CometChat components — theme changes churn them

Golden rule: if the test fails because YOUR code changed, it's valuable. If it fails because the UIKit updated, it's churn.

---

2. Toolchain

LayerToolWhy
Unit testsJUnit 4 + Mockito / MockKStandard Android unit testing
Component testsRobolectricRun Android component tests without emulator
UI testsEspressoAndroid's native UI testing framework
E2EMaestroDeclarative YAML flows, fast, stable
CIGitHub Actions / BitriseAutomated test runs

---

3. Mocking the CometChat SDK

Java (Mockito):

@RunWith(MockitoJUnitRunner.class)
public class ChatViewModelTest {
    @Test
    public void testLoginCallsInit() {
        try (MockedStatic<CometChatUIKit> mocked = mockStatic(CometChatUIKit.class)) {
            mocked.when(CometChatUIKit::getLoggedInUser).thenReturn(null);
            mocked.when(CometChatUIKit::isSDKInitialized).thenReturn(true);

            // Test your ViewModel or helper that calls login
            // Verify init was called before login
        }
    }
}

Kotlin (MockK):

@Test
fun `already logged in skips login`() {
    mockkStatic(CometChatUIKit::class)
    every { CometChatUIKit.getLoggedInUser() } returns mockk<User>()

    // Your code should skip login
    verify(exactly = 0) { CometChatUIKit.login(any(), any()) }

    unmockkAll()
}

---

4. Espresso UI tests

@RunWith(AndroidJUnit4.class)
public class MessagesActivityTest {
    @Rule
    public ActivityScenarioRule<MessagesActivity> rule =
        new ActivityScenarioRule<>(MessagesActivity.class);

    @Test
    public void messageListIsDisplayed() {
        onView(withId(R.id.messageList)).check(matches(isDisplayed()));
    }

    @Test
    public void composerIsDisplayed() {
        onView(withId(R.id.composer)).check(matches(isDisplayed()));
    }
}

---

5. E2E with Maestro

.maestro/chat-happy-path.yaml:

appId: com.yourapp.android
---
- launchApp
- tapOn: "Login"
- inputText: "cometchat-uid-1"
- tapOn: "Continue"
- assertVisible: "Chats"
- tapOn:
    id: "conversations"
    index: 0
- assertVisible: "Type a message"
- inputText: "Hello from Maestro"
- tapOn:
    id: "send_button"
- assertVisible: "Hello from Maestro"

Run: maestro test .maestro/chat-happy-path.yaml

---

6. CI integration

# .github/workflows/test.yml
name: test
on: [push, pull_request]
jobs:
  unit-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          java-version: 17
          distribution: temurin
      - run: ./gradlew test

---

7. Common failure modes

SymptomCauseFix
NoClassDefFoundError: CometChatSDK not mockedAdd Mockito/MockK mock for static methods
Espresso test hangsAsync CometChat operationRegister IdlingResource
Tests pass locally, fail on CIEmulator not bootedPin emulator API level in CI
IllegalStateException: not initializedinit() not called in test setupMock isSDKInitialized() to return true

---

Hard rules

  • Mock the SDK in every unit test. Running real CometChat requires network + servers.
  • Don't test UIKit internals. You're responsible for YOUR code.
  • Skip realtime tests. They require real servers and produce flaky suites.
  • Assert on view IDs and state, not pixels. Theme changes churn pixel assertions.
  • E2E runs on emulator/device, not JUnit. Don't test real CometChat flow in unit tests.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.