月: 2023年8月

  • Autifyでの高度な待機処理: 非活性ボタンを活性化するまで

    はじめに

    テストオートメーションツール「Autify」は、非技術者でも簡単にWebアプリケーションのE2Eテストを構築・実行することができるツールです。しかしながら、特定の操作が完了するまで待機するといったシチュエーションでは、JavaScriptステップを利用することでより高度な制御が可能になります。

    今回は、あるボタンが非活性(disabled)から活性になるのを待つシチュエーションを例に、Autify内でのJavaScriptステップの作成方法を解説します。

    シチュエーション

    テストシナリオ内で、あるアクションの後、ボタンが活性化されるのを30秒間待ち、活性になったらその後のステップへ進むというシチュエーションを想定します。

    解決方法

    Autify内でJavaScriptステップを作成し、以下のスクリプトを利用します。

    var xpath = "/html/body/div[1]/div/div/div/div[1]/div/div[3]/div[2]/button";
    var element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    if (!element) {
    throw new Error("Error: cannot find the element with xpath(" + xpath + ").");
    }
    var endTime = Date.now() + 30000;
    (function checkIfEnabled() {
    if (Date.now() > endTime) {
    throw new Error("Timeout: Button was not enabled within 30 seconds.");
    }
    if (!element.disabled) {
    return;
    } else {
    setTimeout(checkIfEnabled, 500);
    }
    })();

    まとめ

    Autifyは直感的なインターフェースでテストシナリオを組むことができますが、JavaScriptステップをうまく活用することで、さらに柔軟なテストの実現が可能となります。このようなテクニックを駆使して、品質の高いテストオートメーションを構築しましょう。

  • AWS SAM CLIでDockerがUnreachableな場合の解決

    AWS SAM CLIでDockerがUnreachableな場合の解決

    はじめに

    AWS Serverless Application Model (SAM) は、サーバレスアプリケーションを簡単に作成、テスト、デプロイするためのフレームワークです。しかし、時々 sam build --use-container コマンドを使用したときに、”Docker is unreachable. Docker needs to be running to build inside a container.”というエラーメッセージが表示されることがあります。

    Dockerが実行中であり、Dockerのバージョン情報が正しく表示されているにもかかわらず、このエラーが発生することがあります。このブログでは、その問題の解決法について説明します。

     

    問題の再現

    以下のようなコマンドを実行してみました。

    $ sam build --use-container

    そして、以下のエラーが表示されました。

    Error: Docker is unreachable. Docker needs to be running to build inside a container.

    しかし、Dockerは実行中であり、バージョン情報も正しく表示されます。

    $ docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    $ docker --version
    Docker version 23.0.5, build bc4487a

    解決法

    解決法は、Dockerのコンテキストを確認し、適切に設定することです。

    まず、現在のDockerのコンテキストを表示します。

    $ docker context ls

    次に、適切なDockerのエンドポイントに対する環境変数 DOCKER_HOST を設定します。

    $ DOCKER_HOST=unix:///Users/sumito.tsukada/.docker/run/docker.sock sam build --use-container

    これにより、Dockerが適切に認識され、SAM buildコマンドが正常に実行されるはずです。

    結論

    DockerとAWS SAM CLIの連携は、サーバレスアプリケーションの開発をスムーズに進める上で非常に便利です。しかし、時々ツール間の接続に問題が生じることがあります。そのような場合は、環境変数を適切に設定し直すことで問題が解決することがあります。ぜひ、この記事があなたの問題解決の一助となることを願っています。