ローソンデジタルイノベーション テックブログ

ローソンデジタルイノベーション(LDI)の技術ブログです

Shiratesを使ってAndroidをセットアップする(3)- プロキシの設定/解除を自動化する

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています

前回はShiratesを使用してAndroidの設定アプリで自動入力サービスを無効にする手順を自動テストとして自動化しました。

今回はAndroidの設定アプリでプロキシ設定/解除する手順を自動化する方法を紹介します。

前提環境

Shiratesはローソンデジタルイノベーションが作成したスマホアプリ用の自動テストツールです。 自社で運用していますが、オープンソースソフトウェアとして公開しているのでどなたでも利用できます。

前回記事の内容を実施して自動テスト環境を構築しているという前提で以下の説明を行います。

Androidのプロキシを設定する

以下の手順を自動化してみます。

  • ネットワークとインターネットをタップする
  • `インターネット*をタップする
  • 接続済みをタップする
  • 変更ボタンをタップする



  • 詳細設定をタップする
  • なしをタップする
  • 手動をタップする
  • プロキシのホスト名の入力欄をタップする



  • 10.0.2.2を入力する
  • プロキシポートの入力欄をタップする
  • 8080を入力する
  • 保存をタップする
  • 接続済みが表示されていることを確認する



上記手順を表にまとめると以下のようになります。

No アクション セレクター
1 設定アプリを起動する
2 ネットワークとインターネットをタップする ネットワークとインターネット
3 インターネットをタップする インターネット
4 接続済みをタップする 接続済み
5 変更ボタンをタップする @変更
6 詳細設定をタップする 詳細設定
7 なしをタップする なし
8 手動をタップする なし
9 プロキシのホスト名の入力欄をタップする #proxy_hostname
10 10.0.2.2を入力する
11 プロキシポートの入力欄をタップする #proxy_port
12 8080を入力する
13 保存をタップする 保存
14 接続済みが表示されていることを確認する 接続済み

テストクラスの作成

  • src/test/kotlinフォルダ下にSetProxyという名前でクラスを作成します。
  • 下記内容に編集します。
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.configuration.Testrun
import shirates.core.driver.branchextension.ifCanSelect
import shirates.core.driver.commandextension.*
import shirates.core.testcode.UITest

@Testrun("testConfig/android/androidSettings/testrun.properties")
class SetProxy : UITest() {

    @Test
    @Order(10)
    @DisplayName("プロキシを[10.0.2.2:8080]に設定する")
    fun s1() {

        scenario {
            case(1) {
                condition {
                    it.terminateApp()
                        .launchApp()
                }.action {
                    it.tap("ネットワークとインターネット")
                        .tap("インターネット")
                        .tap("接続済み")
                        .tap("@変更")
                        .ifCanSelect("詳細設定") {
                            it.tap()
                        }
                        .ifCanSelect("なし") {
                            it.tap()
                                .tap("手動")
                        }
                        .tapWithScrollDown("#proxy_hostname")
                        .sendKeys("10.0.2.2")
                        .tapWithScrollDown("#proxy_port")
                        .sendKeys("8080")
                        .tap("保存")
                }.expectation {
                    it.exist("接続済み")
                }
            }
        }
    }

}

テストコードの実行

  • テストコードを右クリックしてDebugを選択します。

  • テストの実行が正常に完了するとコンソールにログ出力先のリンクが出力されます。リンクをクリックするとフォルダが開きます。


  • Report(Simple)を開きます。

Androidのプロキシ設定を解除する

以下の手順を自動化してみます。

  • ネットワークとインターネットをタップする
  • `インターネット*をタップする
  • 接続済みをタップする
  • 変更ボタンをタップする



  • 手動またはプロキシを自動設定が設定されている場合はタップする
    なしをタップする
    保存をタップする
  • 上記以外の場合はキャンセルをタップする
  • 接続済みが表示されていることを確認する



上記手順を表にまとめると以下のようになります。

No アクション セレクター
1 設定アプリを起動する
2 ネットワークとインターネットをタップする ネットワークとインターネット
3 インターネットをタップする インターネット
4 接続済みをタップする 接続済み
5 変更ボタンをタップする @変更
6 手動またはプロキシを自動設定が設定されている場合はタップする
なしをタップする
保存をタップする
手動||プロキシを自動設定
7 上記以外の場合はキャンセルをタップする キャンセル
8 接続済みが表示されていることを確認する 接続済み

テストコードの実装

上記で作成したテストクラスSetProxyに以下のテスト関数を追加します。

    @Test
    @Order(20)
    @DisplayName("プロキシを[なし]に設定する")
    fun s2() {

        scenario {
            case(1) {
                condition {
                    it.terminateApp()
                        .launchApp()
                }.action {
                    it.tap("ネットワークとインターネット")
                        .tap("インターネット")
                        .tap("接続済み")
                        .tap("@変更")
                        .ifCanSelect("手動||プロキシを自動設定") {
                            it.tap()
                                .tap("なし")
                                .tap("保存")
                        }.ifElse {
                            it.tap("キャンセル")
                        }
                }.expectation {
                    it.exist("接続済み")
                }
            }
        }
    }

テストコードの実行

  • テストコードを右クリックしてDebugを選択します。

  • テストの実行が正常に完了するとコンソールにログ出力先のリンクが出力されます。リンクをクリックするとフォルダが開きます。


  • Report(Simple)を開きます。

まとめ

Shiratesを使用してAndroidの設定アプリでプロキシ設定/解除する手順の自動化方法を紹介しました。