Skip to content

Commit 1f0a4b7

Browse files
Titouan Thibaudtitooan
authored andcommitted
Update UI tests and fix linter issues.
1 parent 58ae360 commit 1f0a4b7

File tree

18 files changed

+101
-88
lines changed

18 files changed

+101
-88
lines changed
Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package org.mozilla.tryfox.ui.screens
22

33
import androidx.compose.ui.test.assertIsDisplayed
4-
import androidx.compose.ui.test.hasContentDescription
54
import androidx.compose.ui.test.junit4.createAndroidComposeRule
65
import androidx.compose.ui.test.onNodeWithTag
76
import androidx.test.ext.junit.runners.AndroidJUnit4
87
import org.junit.Rule
98
import org.junit.Test
109
import org.junit.runner.RunWith
1110
import org.mozilla.tryfox.MainActivity
12-
import org.mozilla.tryfox.R
1311

1412
@RunWith(AndroidJUnit4::class)
1513
class HomeScreenTest {
@@ -18,29 +16,44 @@ class HomeScreenTest {
1816
val composeTestRule = createAndroidComposeRule<MainActivity>()
1917

2018
@Test
21-
fun homeScreen_showsFenixAndFocusCards() {
22-
val activity = composeTestRule.activity
23-
19+
fun homeScreen_showsFenixNightlyCard() {
2420
// --- Fenix (Nightly) Card ---
25-
val fenixIconDesc = activity.getString(R.string.app_icon_firefox_nightly_description)
26-
val fenixIconMatcher = hasContentDescription(fenixIconDesc)
2721
val fenixTitleTag = "app_title_text_fenix"
2822

29-
// Assert Fenix icon is displayed
30-
composeTestRule.onNode(fenixIconMatcher, useUnmergedTree = true).assertIsDisplayed()
31-
3223
// Assert Fenix text (found by tag) is displayed
3324
composeTestRule.onNodeWithTag(fenixTitleTag, useUnmergedTree = true).assertIsDisplayed()
25+
}
26+
27+
@Test
28+
fun homeScreen_showsFenixBetaCard() {
29+
// --- Fenix Beta Card ---
30+
val betaTitleTag = "app_title_text_fenix-beta"
31+
32+
// Assert Beta text (found by tag) is displayed
33+
composeTestRule.onNodeWithTag(betaTitleTag, useUnmergedTree = true).assertIsDisplayed()
34+
}
3435

35-
// --- Focus Card ---
36-
val focusIconDesc = activity.getString(R.string.app_icon_focus_description)
37-
val focusIconMatcher = hasContentDescription(focusIconDesc)
38-
val focusTitleTag = "app_title_text_focus"
36+
@Test
37+
fun homeScreen_showsFenixReleaseCard() {
38+
// --- Fenix Release Card ---
39+
val releaseTitleTag = "app_title_text_fenix-release"
40+
41+
// Assert Release text (found by tag) is displayed
42+
composeTestRule.onNodeWithTag(releaseTitleTag, useUnmergedTree = true).assertIsDisplayed()
43+
}
44+
45+
@Test
46+
fun homeScreen_showsAllThreeFenixVariants() {
47+
// --- Fenix (Nightly) Card ---
48+
val fenixTitleTag = "app_title_text_fenix"
49+
composeTestRule.onNodeWithTag(fenixTitleTag, useUnmergedTree = true).assertIsDisplayed()
3950

40-
// Assert Focus icon is displayed
41-
composeTestRule.onNode(focusIconMatcher, useUnmergedTree = true).assertIsDisplayed()
51+
// --- Fenix Beta Card ---
52+
val betaTitleTag = "app_title_text_fenix-beta"
53+
composeTestRule.onNodeWithTag(betaTitleTag, useUnmergedTree = true).assertIsDisplayed()
4254

43-
// Assert Focus text (found by tag) is displayed
44-
composeTestRule.onNodeWithTag(focusTitleTag, useUnmergedTree = true).assertIsDisplayed()
55+
// --- Fenix Release Card ---
56+
val releaseTitleTag = "app_title_text_fenix-release"
57+
composeTestRule.onNodeWithTag(releaseTitleTag, useUnmergedTree = true).assertIsDisplayed()
4558
}
4659
}

app/src/androidTest/java/org/mozilla/tryfox/ui/screens/ProfileScreenTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import org.junit.Test
1515
import org.junit.runner.RunWith
1616
import org.mozilla.tryfox.data.FakeCacheManager
1717
import org.mozilla.tryfox.data.FakeDownloadFileRepository
18-
import org.mozilla.tryfox.data.FakeTreeherderRepository
1918
import org.mozilla.tryfox.data.FakeIntentManager
19+
import org.mozilla.tryfox.data.FakeTreeherderRepository
2020
import org.mozilla.tryfox.data.FakeUserDataRepository
21-
import org.mozilla.tryfox.data.repositories.UserDataRepository
2221
import org.mozilla.tryfox.data.managers.CacheManager
22+
import org.mozilla.tryfox.data.repositories.UserDataRepository
2323

2424
@RunWith(AndroidJUnit4::class)
2525
class ProfileScreenTest {

app/src/main/java/org/mozilla/tryfox/TryFoxViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ import kotlinx.coroutines.flow.asStateFlow
1717
import kotlinx.coroutines.flow.launchIn
1818
import kotlinx.coroutines.flow.onEach
1919
import kotlinx.coroutines.launch
20-
import org.mozilla.tryfox.data.repositories.DownloadFileRepository
2120
import org.mozilla.tryfox.data.DownloadState
22-
import org.mozilla.tryfox.data.repositories.TreeherderRepository
2321
import org.mozilla.tryfox.data.NetworkResult
2422
import org.mozilla.tryfox.data.managers.CacheManager
2523
import org.mozilla.tryfox.data.managers.IntentManager
24+
import org.mozilla.tryfox.data.repositories.DownloadFileRepository
25+
import org.mozilla.tryfox.data.repositories.TreeherderRepository
2626
import org.mozilla.tryfox.model.CacheManagementState
2727
import org.mozilla.tryfox.ui.models.AbiUiModel
2828
import org.mozilla.tryfox.ui.models.ArtifactUiModel

app/src/main/java/org/mozilla/tryfox/data/DefaultMozillaPackageManager.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import kotlinx.coroutines.flow.Flow
1313
import kotlinx.coroutines.flow.callbackFlow
1414
import org.mozilla.tryfox.model.AppState
1515
import org.mozilla.tryfox.util.FENIX_BETA
16-
import org.mozilla.tryfox.util.FENIX_NIGHTLY_PACKAGE
17-
import org.mozilla.tryfox.util.FENIX_RELEASE_PACKAGE
1816
import org.mozilla.tryfox.util.FENIX_BETA_PACKAGE
1917
import org.mozilla.tryfox.util.FENIX_NIGHTLY
18+
import org.mozilla.tryfox.util.FENIX_NIGHTLY_PACKAGE
2019
import org.mozilla.tryfox.util.FENIX_RELEASE
20+
import org.mozilla.tryfox.util.FENIX_RELEASE_PACKAGE
2121
import org.mozilla.tryfox.util.FOCUS
2222
import org.mozilla.tryfox.util.FOCUS_NIGHTLY_PACKAGE
2323
import org.mozilla.tryfox.util.REFERENCE_BROWSER
@@ -28,7 +28,6 @@ import org.mozilla.tryfox.util.TRYFOX_PACKAGE
2828
class DefaultMozillaPackageManager(private val context: Context) : MozillaPackageManager {
2929

3030
private val packageManager: PackageManager = context.packageManager
31-
private val TAG = "MozillaPackageManager"
3231

3332
private fun getPackageInfo(packageName: String): PackageInfo? {
3433
return try {
@@ -114,4 +113,8 @@ class DefaultMozillaPackageManager(private val context: Context) : MozillaPackag
114113
val intent = packageManager.getLaunchIntentForPackage(appName)
115114
intent?.let(context::startActivity)
116115
}
116+
117+
companion object {
118+
private const val TAG = "MozillaPackageManager"
119+
}
117120
}

app/src/main/java/org/mozilla/tryfox/data/MozillaArchiveHtmlParser.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class MozillaArchiveHtmlParser {
5555
val isBeta = version.contains(Regex("[ab]\\d+|beta|alpha|rc"))
5656
!isBeta && version.matches(Regex("\\d+\\.\\d+(\\.\\d+)?"))
5757
}
58-
58+
5959
// Use Version comparison to find the latest stable release
6060
stableReleases.mapNotNull { Version.from(it) }
6161
.maxOrNull()?.toString() ?: ""
@@ -73,18 +73,18 @@ class MozillaArchiveHtmlParser {
7373
.toList()
7474

7575
val abis = mutableListOf<String>()
76-
76+
7777
for (buildString in rawBuildStrings) {
7878
// Pattern: {appName}-D+.D+(.D+)?[ab]D+-android-ABI/ or {appName}-D+.D+(.D+)?-android/
7979
// Also supports: {appName}-D+.D+(.D+)?-android-ABI/ (stable releases)
80-
// Examples:
80+
// Examples:
8181
// - fenix-145.0-android-arm64-v8a/ (stable)
8282
// - fenix-145.0-android/ (stable universal)
8383
// - fenix-146.0b5-android-arm64-v8a/ (beta)
8484
// - fenix-146.0b5-android/ (beta universal)
8585
val pattern = Regex("^$appName-\\d+\\.\\d+(?:\\.\\d+)?(?:[ab]\\d+)?-android(?:-(.+?))?/$")
8686
val matchResult = pattern.find(buildString)
87-
87+
8888
if (matchResult != null) {
8989
val abi = matchResult.groups[1]?.value
9090
abis.add(abi ?: "universal")
@@ -133,6 +133,5 @@ class MozillaArchiveHtmlParser {
133133
}
134134

135135
return null
136-
137136
}
138137
}

app/src/main/java/org/mozilla/tryfox/data/ReleaseType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ package org.mozilla.tryfox.data
22

33
enum class ReleaseType {
44
Beta,
5-
Release
5+
Release,
66
}

app/src/main/java/org/mozilla/tryfox/data/repositories/DefaultMozillaArchiveRepository.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import org.mozilla.tryfox.data.ReleaseType
1212
import org.mozilla.tryfox.model.MozillaArchiveApk
1313
import org.mozilla.tryfox.network.MozillaArchivesApiService
1414
import org.mozilla.tryfox.util.FENIX
15-
import org.mozilla.tryfox.util.FENIX_RELEASE
1615
import org.mozilla.tryfox.util.FENIX_BETA
16+
import org.mozilla.tryfox.util.FENIX_RELEASE
1717
import org.mozilla.tryfox.util.FOCUS
1818
import retrofit2.HttpException
1919

@@ -35,7 +35,7 @@ class DefaultMozillaArchiveRepository(
3535
}
3636

3737
internal fun archiveUrlForRelease(number: String): String {
38-
return "${RELEASES_FENIX_BASE_URL}${number}/android/"
38+
return "${RELEASES_FENIX_BASE_URL}$number/android/"
3939
}
4040
}
4141

@@ -49,28 +49,28 @@ class DefaultMozillaArchiveRepository(
4949
val releasesPageUrl = RELEASES_FENIX_BASE_URL
5050
val releasesHtml = mozillaArchivesApiService.getHtmlPage(releasesPageUrl)
5151
val latestReleaseVersion = mozillaArchiveHtmlParser.parseFenixReleasesFromHtml(releasesHtml, releaseType)
52-
52+
5353
if (latestReleaseVersion.isEmpty()) {
5454
return NetworkResult.Error("No releases found for type $releaseType", null)
5555
}
56-
56+
5757
// Get the release directory listing to find available ABIs
5858
val releaseUrl = archiveUrlForRelease(latestReleaseVersion)
5959
val releaseHtml = mozillaArchivesApiService.getHtmlPage(releaseUrl)
6060
val abis = mozillaArchiveHtmlParser.parseFenixReleaseAbisFromHtml(releaseHtml, FENIX)
61-
61+
6262
if (abis.isEmpty()) {
6363
return NetworkResult.Error("No ABIs found for release $latestReleaseVersion", null)
6464
}
65-
65+
6666
val apks = abis.map { abi ->
6767
constructReleaseApk(latestReleaseVersion, abi, releaseUrl, releaseType)
6868
}
69-
69+
7070
if (apks.isEmpty()) {
7171
return NetworkResult.Error("Failed to construct APKs for release $latestReleaseVersion", null)
7272
}
73-
73+
7474
NetworkResult.Success(apks)
7575
} catch (e: Exception) {
7676
NetworkResult.Error("Failed to fetch or parse Fenix releases: ${e.message}", e)
@@ -80,8 +80,8 @@ class DefaultMozillaArchiveRepository(
8080
private fun constructReleaseApk(version: String, abi: String, releaseBaseUrl: String, releaseType: ReleaseType): MozillaArchiveApk {
8181
val buildString = "fenix-$version-android${if (abi == "universal") "" else "-$abi"}/"
8282
val fileName = "fenix-$version.multi.android-$abi.apk"
83-
val fullUrl = "${releaseBaseUrl}${buildString}${fileName}"
84-
83+
val fullUrl = "${releaseBaseUrl}${buildString}$fileName"
84+
8585
val appName = when (releaseType) {
8686
ReleaseType.Release -> FENIX_RELEASE
8787
ReleaseType.Beta -> FENIX_BETA

app/src/main/java/org/mozilla/tryfox/data/repositories/TreeherderRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ interface TreeherderRepository {
1010
suspend fun getPushesByAuthor(author: String): NetworkResult<TreeherderRevisionResponse>
1111
suspend fun getJobsForPush(pushId: Int): NetworkResult<TreeherderJobsResponse>
1212
suspend fun getArtifactsForTask(taskId: String): NetworkResult<ArtifactsResponse>
13-
}
13+
}

app/src/main/java/org/mozilla/tryfox/data/repositories/UserDataRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ interface UserDataRepository {
1717
* @param email The email to save.
1818
*/
1919
suspend fun saveLastSearchedEmail(email: String)
20-
}
20+
}

app/src/main/java/org/mozilla/tryfox/di/AppModule.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,27 @@ import org.koin.core.qualifier.named
1313
import org.koin.dsl.module
1414
import org.mozilla.tryfox.BuildConfig
1515
import org.mozilla.tryfox.TryFoxViewModel
16-
import org.mozilla.tryfox.data.repositories.DefaultDownloadFileRepository
1716
import org.mozilla.tryfox.data.DefaultMozillaPackageManager
17+
import org.mozilla.tryfox.data.MozillaPackageManager
18+
import org.mozilla.tryfox.data.managers.CacheManager
19+
import org.mozilla.tryfox.data.managers.DefaultCacheManager
20+
import org.mozilla.tryfox.data.managers.DefaultIntentManager
21+
import org.mozilla.tryfox.data.managers.IntentManager
22+
import org.mozilla.tryfox.data.repositories.DefaultDownloadFileRepository
23+
import org.mozilla.tryfox.data.repositories.DefaultMozillaArchiveRepository
24+
import org.mozilla.tryfox.data.repositories.DefaultTreeherderRepository
1825
import org.mozilla.tryfox.data.repositories.DefaultUserDataRepository
1926
import org.mozilla.tryfox.data.repositories.DownloadFileRepository
2027
import org.mozilla.tryfox.data.repositories.FenixBetaReleaseRepository
2128
import org.mozilla.tryfox.data.repositories.FenixReleaseReleaseRepository
2229
import org.mozilla.tryfox.data.repositories.FenixReleaseRepository
23-
import org.mozilla.tryfox.data.repositories.DefaultTreeherderRepository
2430
import org.mozilla.tryfox.data.repositories.FocusReleaseRepository
25-
import org.mozilla.tryfox.data.repositories.TreeherderRepository
2631
import org.mozilla.tryfox.data.repositories.MozillaArchiveRepository
27-
import org.mozilla.tryfox.data.repositories.DefaultMozillaArchiveRepository
28-
import org.mozilla.tryfox.data.MozillaPackageManager
2932
import org.mozilla.tryfox.data.repositories.ReferenceBrowserReleaseRepository
3033
import org.mozilla.tryfox.data.repositories.ReleaseRepository
34+
import org.mozilla.tryfox.data.repositories.TreeherderRepository
3135
import org.mozilla.tryfox.data.repositories.TryFoxReleaseRepository
3236
import org.mozilla.tryfox.data.repositories.UserDataRepository
33-
import org.mozilla.tryfox.data.managers.CacheManager
34-
import org.mozilla.tryfox.data.managers.DefaultCacheManager
35-
import org.mozilla.tryfox.data.managers.DefaultIntentManager
36-
import org.mozilla.tryfox.data.managers.IntentManager
3737
import org.mozilla.tryfox.network.DownloadApiService
3838
import org.mozilla.tryfox.network.GithubApiService
3939
import org.mozilla.tryfox.network.MozillaArchivesApiService

0 commit comments

Comments
 (0)