mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
* Fix AboutActivity Instrumentation Tests * Fix WelcomeActivity Instrumentation Tests * Fix SearchActivity Instrumentation Tests * Fix SignupTest Instrumentation Tests * Fix LoginActivityTest Instrumentation Tests * Fix SettingsActivity Instrumentation Tests * Fix LoginActivity Instrumentation Tests * Update loginUser * Add logoutUser * Fix logoutUser * Update github action to use env variables * Fix github action to use env variables * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Fix github action * Remove scroll * Add wait time * Fix keyboard issue * Disable animation * Enable animation * Enable animation * Disable animation * Fix compile error * Remove AVD Cache * Set timezone and dns * Add AVD cache * Add API level * Update API level to 24 * Add sleep timer * Add scroll * Remove logout * Ignore some tests * update logout * update logout * Fix scroll layout problem * Fix scroll layout problem * Ignore orientation test * Update tests * Update tests * Update API level to 29 * Change device and API level to 27 * Use AndroidJUnit4 * Change API to 28 * Try with macos * Use nested scrollview * Update Profile Activity Test * Update Profile Activity Test * Turn off rotation * Change device * Remove failing test * Change API to 24 * Add rotation lock for failing test * Change API to 24 * Add sleep * Remove text * Remove child * Force rotation on back press * Force open more sheet * Change device to pixel 5 * Change device to 13.5inch * Update tests * Ignore failing test * Use linux * Update tests * Use repo secrets instead * Add mainactivity tests * Remove content description * Different workflows for PR and branch, PR workflow will need maintainer approval to prevent secrets getting leaked * Run instrumentation tests only for push and not for PRs * Fix FileNotFound Exception * Update MainActivity and Profile tests * Fix coverage path issue * Add wait time for map to load * Open contribution * Update settings tests * Update main activity tests * Fix failing test * Fix failing test * Increase login time * Separate settings test * Update review tests * Ignore uploadCancelledAfterLocationPickedTest * Update MainActivity Tests * Update UploadCancelledTest * Update UploadCancelledTest * Update device * Fix Init release error * Fix failing test * Fix failing test * Try with long click * Update UploadCancelledTest.kt * Fix Leaderboard Test * Update testContributions * Set GPS coordinates * Add zoomControllers to excludes * Add ExploreActivityTest * Remove failing condition * Merge tests * Remove failing test * Remove failing test * Fix failing test * Fix failing test * Update AboutActivityTest.kt * Update jacoco.gradle
145 lines
4.8 KiB
Kotlin
145 lines
4.8 KiB
Kotlin
package fr.free.nrw.commons
|
|
|
|
import android.app.Activity
|
|
import android.app.Instrumentation
|
|
import android.content.Intent
|
|
import androidx.test.core.app.ApplicationProvider.getApplicationContext
|
|
import androidx.test.espresso.Espresso
|
|
import androidx.test.espresso.action.ViewActions
|
|
import androidx.test.espresso.assertion.ViewAssertions
|
|
import androidx.test.espresso.intent.Intents
|
|
import androidx.test.espresso.intent.matcher.IntentMatchers
|
|
import androidx.test.espresso.matcher.ViewMatchers
|
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
import androidx.test.rule.ActivityTestRule
|
|
import androidx.test.uiautomator.UiDevice
|
|
import fr.free.nrw.commons.utils.ConfigUtils.getVersionNameWithSha
|
|
import org.hamcrest.CoreMatchers
|
|
import org.junit.After
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
class AboutActivityTest {
|
|
|
|
@get:Rule
|
|
var activityRule: ActivityTestRule<*> = ActivityTestRule(AboutActivity::class.java)
|
|
|
|
private val device: UiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
|
|
|
@Before
|
|
fun setup() {
|
|
device.setOrientationNatural()
|
|
device.freezeRotation()
|
|
Intents.init()
|
|
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
|
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
|
}
|
|
|
|
@After
|
|
fun cleanUp() {
|
|
Intents.release()
|
|
}
|
|
|
|
@Test
|
|
fun testBuildNumber() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_version))
|
|
.check(
|
|
ViewAssertions.matches(
|
|
withText(getApplicationContext<CommonsApplication>().getVersionNameWithSha())
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchWebsite() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.website_launch_icon)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.WEBSITE_URL)
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchFacebook() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.facebook_launch_icon)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.anyOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.FACEBOOK_WEB_URL),
|
|
IntentMatchers.hasPackage(Urls.FACEBOOK_PACKAGE_NAME)
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchGithub() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.github_launch_icon)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.GITHUB_REPO_URL)
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchAboutPrivacyPolicy() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_privacy_policy)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(BuildConfig.PRIVACY_POLICY_URL)
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchTranslate() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_translate)).perform(ViewActions.click())
|
|
Espresso.onView(ViewMatchers.withId(android.R.id.button1)).perform(ViewActions.click())
|
|
val langCode = CommonsApplication.getInstance().languageLookUpTable.codes[0]
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData("${Urls.TRANSLATE_WIKI_URL}$langCode")
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchAboutCredits() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_credits)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.CREDITS_URL)
|
|
)
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testLaunchUserGuide() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_user_guide)).perform(ViewActions.click())
|
|
Intents.intended(CoreMatchers.allOf(IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.USER_GUIDE_URL)))
|
|
}
|
|
|
|
|
|
@Test
|
|
fun testLaunchAboutFaq() {
|
|
Espresso.onView(ViewMatchers.withId(R.id.about_faq)).perform(ViewActions.click())
|
|
Intents.intended(
|
|
CoreMatchers.allOf(
|
|
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
|
IntentMatchers.hasData(Urls.FAQ_URL)
|
|
)
|
|
)
|
|
}
|
|
}
|