6

BrowserStackは、最新の最新のブラウザーに対して Web サイトをテストするための強力なプラットフォームです。ここまでは順調ですね。

BrowserStackは API も提供します

API には、特定の URL をロードする特定のブラウザー (バージョン) を表すワーカーの概念があります。

そのようなワーカー インスタンスで何ができるでしょうか?

そのようなワーカーを Selenium テストとどのように統合しますか?

そのようなワーカーを単体テスト (Python) とどのように統合しますか?

たとえば、ビデオ プレーヤーを備えた特定の Web サイトが実際にビデオを読み込んで再生するかどうかをテストする場合 (たとえば、クロス ブラウザ ビデオ テスト用) に、このようなワーカーをどのように使用しますか?

4

2 に答える 2

5

現在の API は、提供された URL をすべてのプラットフォームとブラウザーの組み合わせで開きます。

したがって、多数の JS テストを含む HTML ページを開く場合は、ブラウザから結果を自動的に取得する Yeti/testswarm/js-test-driver などのツールを使用する必要があります。

BrowserStack API を使用する別の例は、http: //ryanseddon.github.com/bunyip/ です。

Jenkins との統合のサンプル: http://github.com/jquery/testswarm/wiki/Automated-Distributed-Continuous-Integration-for-JavaScript

ローカルで JS をテストするには、localtunnelなどのツールを使用して、ローカル サーバーの公開 URL を取得する必要があります。

于 2012-09-13T07:50:02.503 に答える
0

現在の BrowserStack API の最も便利な機能の 1 つは、セッションを失敗したテストとしてマークできることです。

他の Selenium ハブ/ノード システムと同様に、BrowserStack は、ユーザーがブラウザーにコマンドを送信する理由を知りません。要求したコマンドを実行するだけです。したがって、テストがいつ失敗したかを知る方法はありません。

ただし、API を使用してテストが失敗したことを伝えることができるため、BrowserStack UI でセッションが失敗としてマークされます。その後、失敗したセッションのみをフィルタリングして調査できます。

これは Python ではなく Java で書かれていますが、失敗したテストを反映するようにセッションを更新する方法を示すサンプル コードを次に示します。Selenium セッション ID (問題のテストを実行するときに保存する必要があります) と、テストが失敗したときに取得した例外を渡すだけです。

import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.unblu.automation.support.settings.Prop;
import com.unblu.automation.support.settings.Settings;

import org.openqa.selenium.remote.SessionId;

public class BrowserStackUpdater {

    private void markSessionAsFailed(SessionId sessionId, Throwable e) {
        var url = "https://api.browserstack.com/automate/sessions/" + sessionId + ".json";
        try {
            var userName = "BROWSERSTACKUSERNAMEHERE";
            var key = "BROWSERSTACKKEYHERE";
            var result = Unirest.put(url)
                .basicAuth(userName, key)
                .field("status", "failed")
                .field("reason", e.toString())
                .asString();
            System.out.println("Marking test failed; reply from BrowserStack: " +
              result.getStatus() + " : " + result.getBody());
        }
        catch (UnirestException ue) { ue.printStackTrace(); }
    }

    public void markTestFailedInBrowserStack(Iterable<SessionId> sessionIds, Throwable e) {
        var env = Settings.getString(Prop.runEnvironment);
        if (env.equals("BrowserStack")) {
            for (var sid : sessionIds) {
                markSessionAsFailed(sid, e);
            }
        }
    }
}
于 2018-10-02T15:39:45.363 に答える