Skip to content
Tags

Pitaliumで特定のDOMを指定/除外してテストを実行する

by : 2016/02/12

画面のテスト(リグレッションテスト)を行う上で、画面上の特定の部分についてテストを行いたかったり、逆にテストから省きたいと思うことがあるでしょう。そんな時のためのテクニックを紹介します。

特定のDOMだけターゲットにする

特定のDOMをターゲットとする場合はCompareTargetを使います。下記はその一例で、 #about をターゲットとした場合のコードです。

import java.util.ArrayList;
import java.util.List;
 
import org.junit.Test;
 
import com.htmlhifive.pitalium.core.PtlTestBase;
import com.htmlhifive.pitalium.core.model.CompareTarget;
import com.htmlhifive.pitalium.core.model.ScreenArea;
import com.htmlhifive.pitalium.core.model.SelectorType;
 
public class SampleTest extends PtlTestBase {
 
    @Test
public void testCompareTarget_ID() throws Exception {
// 1. hifiveサイトのトップページを開きます。
driver.get(“https://www.htmlhifive.com/”);// 2. ID: aboutの比較対象をScreenshotArgumentBuilderで作成します。
ScreenshotArgument arg = ScreenshotArgument.builder(“TopPageAbout”)
.addNewTarget(SelectorType.ID, “about”)
.build();

// 3. 検証を実行します。
assertionView.assertView(arg);
}

 
}

SelectorType.IDとなっていますが、これはSelenium APIのByと同じ指定ができます。そのためCLASS_NAMEやCSS_SELECTOR、TAG_NAME、XPATHなども利用できます。

このテストを実行すると、下のような画像が生成され、Webページの一部のDOMだけをターゲットとした比較ができます。

特定のDOMを除外してテストする

逆にDOMを除外する場合としては、タイミングによって違う文字を出すものであったり(カウンターなど)、スクロール時に表示されるBack to Topなどが考えられます。

コードは次のようになります。excludesとしてDOMの場所を指定し、それをCompareTargetで指定しています。

import java.util.Arrays;
import java.util.List;
 
import org.junit.Test;
 
import com.htmlhifive.pitalium.core.PtlTestBase;
import com.htmlhifive.pitalium.core.model.CompareTarget;
import com.htmlhifive.pitalium.core.model.ScreenArea;
import com.htmlhifive.pitalium.core.model.SelectorType;
 
public class SampleTest extends PtlTestBase {
 
    @Test
    public void testExclude() throws Exception {
        // 1. hifiveサイトのトップページを開きます。
        driver.get(“https://www.htmlhifive.com/“);
 
        // 2. 画面全体のスクリーンショットを撮影する設定を作成します。
        //    ただし、画面上部の「Facebook いいね」ウィジェットを除外します。
        ScreenshotArgument arg = ScreenshotArgument.builder(“TopPageExcludeFBLike”)
.addNewTarget()
.addExclude(SelectorType.ID, “fb_share”)
.build();
 
        // 3. スクリーンショットを撮影します(比較を実行します)
        assertionView.assertView(arg);
    }
 
}

画面周りの動きは複雑で、カルーセルのような動きやAjaxによる操作など多数存在します。Pitaliumを使って柔軟なテストケースを作成してください。

From → テスト, Pitalium

現在コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。