Package 

Class DocLocScreenshotTestCase

  • All Implemented Interfaces:
    com.kaspersky.kaspresso.testcases.core.testassistants.TestAssistantsProvider

    
    public abstract class DocLocScreenshotTestCase
    extends TestCase
                        

    The base class for all docloc screenshot tests.

    Project-wide ScreenshotTestCase should be implemented as following:

        open class ProductDocLocScreenshotTestCase(testName: String) : DocLocScreenshotTestCase(
            File(testName), "comma-separated string of locales"
        ) {
    
            @get:Rule
            val activityTestRule = ActivityTestRule(FragmentTestActivity::class.java, true, false)
    
            protected lateinit var activity: FragmentTestActivity
    
            @Before
            open fun setUp() {
                activity = activityTestRule.launchActivity(null)
            }
        }

    Screenshoter test extends the project-wide class:

        @ScreenShooterTest
        class FeatureScreenshot : ProductDocLocScreenshotTestCase("feature_screenshot") {
    
            @Test
            fun featureScreen() {
                val featureView = FeatureFragment.newInstance()
                activity.setFragment(featureView)
                val view = getUiSafeProxy<FeatureView>(featureView) // Explicit type is important and must be interface
    
                view.showLoading()
                captureScreenshot("screenshot_description")
            }
        }

    As you might have noticed, activity test rule is launched with ``FragmentTestActivity``. It's a special per-project empty activity for test with ``setFragment(Fragment)`` method. E.g:

        class FragmentTestActivity : AppCompatActivity() {
    
            override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                setContentView(R.layout.activity_fragment_container)
            }
    
            fun setFragment(fragment: Fragment) {
                val fragmentTransaction = supportFragmentManager.beginTransaction()
                fragmentTransaction.replace(R.id.content_container, fragment, "")
                fragmentTransaction.build()
            }
        }