今日はSkyVisualEditor(以下SVE)の権限関係のテストで行っている半自動化と、そこで使っているツールについてご紹介します。どのように表示されるかを確認することになります。現在このテストでは200程度のVisualforceページについてユーザの権限毎にテストを行っています。自動化したこと以下についてそれぞれタスクとして定義し、それぞれ個別に実行を可能にしています。Salesforce環境構築-テストオブジェクトのメタデータ生成/デプロイ-ページレイアウトのメタデータ生成/デプロイ-オブジェクト・項目権限のメタデータ生成/デプロイ-テストで使用するプロファイルに組織内の全てのVisualforceページへのアクセス権を付与テストデータ-作成-削除SVEページデータ生成-1つのページデータをひな形にオブジェクト毎に複製デプロイしたページをユーザー毎や新規・編集としてそれぞれ開き、スクリーンショットを保存Visualforceページへのアクセス権の追加については、beta版パッケージの削除のために全ページを削除した後に再度テストを実行するときに元のプロファイルメタデータに存在するページを全てデプロイするまでデプロイが通らなくなってしまうため、自動化されたブラウザでプロファイル設定ページを開き、デプロイ済みのページを全て選択することで一部のページのみでテストすることを可能にしています。自動化していないこと自動化しているのはページのスクリーンショット保存までで、その後の表示の確認は人力で行っています。後でページを変更する可能性や時間的な問題から現在はアサーションまでは自動化していません。ツール上記のタスクを作成するにあたって使用しているツール群です。JSforceJSforceはnodeやブラウザからSalesforceのAPIにアクセスできるクライアントです。組織構築用のメタデータデプロイ、差分管理のためのメタデータ取得に使用しています。npmから拾ってきたりプロジェクト独自に定義したタスクを実行するタスクランナーです。各タスクに説明を付けて--helpで参照する(&それをREADMEに張り付ける)程度の目的でつかっています。今はjsforceからgulpタスクを通じて作成しています。(削除に関してはAPI数を気にしてexecuteAnonymousでレコードを全件削除するApexコードを実行していますが)現在はまだSVEページの生成タスクがGruntタスクとして残っていますが、いずれgulpに統一するつもりです。PhantomJSPhantomJSはJavaScriptで行う処理を記述できるヘッドレス(画面を持たない)ブラウザです。この種のヘッドレスブラウザとしては他にSlimerJSやtrifleJSがあります。PhantomJSのAPIはそのままでは様々なページを行き来するのは大変なため、下記のラッパーツールを使用しています。ありますが、こちらは試せていません。書いたコードが実行される環境は違います。require先とスコープが共通だったり、npmモジュールが使用できなかったりします。これはCasperJSようのコードがPhantomJSと同様のコンテキストで実行されるためでしょう。それに対し、Nightmareはnodeからrequireして使用できるnpmモジュールです。そのため、各種npm資産が使用できます(CasperJSもSpookyJSを使えばnodeから使えますが)。NightmareはNightmareで、evaluateがコールバック形式になっているためにスクレイピングで取得した値を別のページで使いたい、などの処理が続くとコールバック地獄が待っています。検討しようと思っています。まとめいかがだったでしょうか。環境を作り直すときにも楽になりますし、ソースコードとして保存しておけば構築時に特定の設定をわすれてしまう、ということもなくなります。このような自動化の仕組みはこれからも積極的に取り入れていきたいものです。Experienceのレコードページをもっと便利にするAppExchangeを社内導入する時に見たい!5つのポイント関連するキーワードSkyVisualEditorTerraSkyBaseについてTerraSkyBaseはクラウドサービスを手掛ける株式会社テラスカイのコンテンツプラットフォームです。