Ghost Inspector と統合する
この記事では、Jira Service Management Cloud の一部のお客様に段階的に展開されている、Jira Service Management でネイティブに利用できる新しいアラート機能を取り上げています。ご利用のサイトにはまだ表示されていないか、利用できない可能性があります。
統合でできるようになること
Ghost Inspector は、テストの実行時に Webhook 通知を送信します。Jira Service Management の Ghost Inspector 統合によって、Jira Service Management はこれらのアラートのディスパッチャーとして機能し、オンコール スケジュールに基づいて通知する適切な担当者を決定します。メール、テキスト メッセージ (SMS)、電話、iPhone や Android のプッシュ通知による通知を行い、アラートが承認またはクローズされるまでアラートをエスカレーションします。
さらに、Jira Service Management はテストからアラートにスクリーンショット画像を添付します。また、アラートには画像へのリンクが表示されます。
統合による機能
Ghost Inspector でテストが失敗すると、統合を通じて Jira Service Management でアラートが自動で作成されます。
統合をセットアップする
Ghost Inspector は API ベースの統合です。設定は次の手順で行います。
Jira Service Management で Ghost Inspector 統合を追加する
Ghost Inspector で統合を設定する
Ghost Inspector 統合を追加する
Bidirectional integrations aren’t supported in Free and Standard plans. All the other integrations are supported at a team level in Free and Standard; however, for their outgoing part to work, you need to upgrade to a higher plan. To add any integration at a site level through Settings
(gear icon) > Products
(under JIRA SETTINGS) > OPERATIONS
, you need to be either on Premium or Enterprise.
統合をチームの運用ページから追加すると、そのチームが統合の所有者になります。つまり、Jira Service Management は、この統合を通じて受信したアラートをチームにのみ割り当てます。
Jira Service Management で Ghost Inspector 統合を追加するには、次の手順を実行します。
チームの運用ページに移動します。
左側のナビゲーション パネルで、[統合] > [統合を追加] の順に選択します。
検索を実行して「Ghost Inspector」を選択します。
次の画面で、統合の名前を入力します。
オプション: 特定のチームが統合からのアラートを受信するようにする場合は、[Assignee team (担当者チーム)] のチームを選択します。
[Continue] を選択します。
この時点で、統合が保存されます。[統合を設定する手順] セクションを展開して、API URL をコピーします。
この URL は、後ほど Ghost Inspector で統合を設定する際に使用します。[統合をオンにする] を選択します。
統合のために作成したルールは、統合をオンにした場合にのみ機能します。
Ghost Inspector で統合を設定する
Ghost Inspector と Jira Service Management の統合を設定するには、次の手順を実行してください。
Ghost Inspector で、新しいテスト スイートを作成してその中にテストを定義します (まだ作成されていない場合)。
テストの設定に移動します。
[Webhook 設定] に移動します。
以前に Jira Service Management からコピーした API URL を [Add Webhook URL (Webhook URLを追加)] に貼り付けます。
[+] アイコンを選択します。
[保存] を選択します。
Ghost Inspector から Jira Service Management に送信されたペイロードの例閉じる
JSON
{
"type": "result",
"data": {
"__v": 0,
"executionTime": 21641,
"dateExecutionFinished": "2014-12-26T12:44:16.238Z",
"endUrl": "https://www.jsm.com/alert/create",
"dateExecutionStarted": "2014-12-26T12:43:54.597Z",
"startUrl": "https://www.jsm.com/auth/login",
"test": {
"_id": "549d11f534fd04ab414f1bd7",
"name": "Create Alert",
"suite": "549d10e134fd04ab414f1bd6",
"organization": "549c158c8eebf29b7976b7b8"
},
"screenshotCompare": {
"compareSmall": {
"depth": 8,
"format": "PNG",
"oname": "549d580a52a9666f152ffb33-compare.png",
"mtime": "2014-12-26T12:44:18.000Z",
"ctime": "2014-12-26T12:44:18.000Z",
"size": 27425,
"path": "/screenshots/549d580a52a9666f152ffb33-compareSmall.png",
"defaultUrl": "https://ghostinspector.s3.amazonaws.com/screenshots/549d580a52a9666f152ffb33-compareSmall.png",
"dims": {
"w": 320,
"h": 240
}
},
"compareOriginal": {
"depth": 8,
"format": "PNG",
"oname": "549d580a52a9666f152ffb33-compare.png",
"mtime": "2014-12-26T12:44:18.000Z",
"ctime": "2014-12-26T12:44:18.000Z",
"size": 41948,
"path": "/screenshots/549d580a52a9666f152ffb33-compareOriginal.png",
"defaultUrl": "${url}?",
"dims": {
"w": 1024,
"h": 768
}
}
},
"screenshot": {
"small": {
"depth": 8,
"format": "PNG",
"oname": "549d580a52a9666f152ffb33.png",
"mtime": "2014-12-26T12:44:17.000Z",
"ctime": "2014-12-26T12:44:17.000Z",
"size": 11532,
"path": "/screenshots/549d580a52a9666f152ffb33-small.png",
"defaultUrl": "https://ghostinspector.s3.amazonaws.com/screenshots/549d580a52a9666f152ffb33-small.png",
"dims": {
"w": 320,
"h": 240
}
},
"original": {
"depth": 8,
"format": "PNG",
"oname": "549d580a52a9666f152ffb33.png",
"mtime": "2014-12-26T12:44:16.000Z",
"ctime": "2014-12-26T12:44:16.000Z",
"size": 34474,
"path": "/screenshots/549d580a52a9666f152ffb33-original.png",
"defaultUrl": "${url}",
"dims": {
"w": 1024,
"h": 768
}
}
},
"_id": "549d580a52a9666f152ffb33",
"video": {
"path": "/videos/549d580a52a9666f152ffb33.mp4",
"url": "https://ghostinspector.s3.amazonaws.com/videos/549d580a52a9666f152ffb33.mp4",
"dims": {
"w": 1024,
"h": 768
}
},
"screenshotCompareDifference": 0.118959,
"screenshotComparePassing": false,
"passing": false,
"console": [],
"urls": [
"https://www.jsm.com/auth/login",
"https://www.jsm.com/auth/signIn",
"https://www.jsm.com/customer/welcome",
"https://www.jsm.com/alert/index",
"https://www.jsm.com/alert/create"
],
"steps": [
{
"target": "#login",
"command": "click",
"value": "",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:56.719Z",
"_id": "549d580c52a9666f152ffb34",
"passing": true,
"optional": false,
"private": false,
"sequence": 0
},
{
"target": "#login",
"command": "assign",
"value": "abc@gmail.com",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:57.897Z",
"_id": "549d580d52a9666f152ffb35",
"passing": true,
"optional": false,
"private": false,
"sequence": 1
},
{
"target": "#password",
"command": "assign",
"value": "123",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:58.518Z",
"_id": "549d580e52a9666f152ffb36",
"passing": true,
"optional": false,
"private": true,
"sequence": 2
},
{
"target": "#password",
"command": "keypress",
"value": "13",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:59.098Z",
"_id": "549d580f52a9666f152ffb37",
"passing": true,
"optional": false,
"private": false,
"sequence": 3
},
{
"target": "a[href=/alert/create] > .l.title",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/index",
"dateExecuted": "2014-12-26T12:44:03.269Z",
"_id": "549d581352a9666f152ffb38",
"passing": true,
"optional": false,
"private": false,
"sequence": 4
},
{
"target": "#message",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/create",
"dateExecuted": "2014-12-26T12:44:04.767Z",
"_id": "549d581452a9666f152ffb39",
"passing": true,
"optional": false,
"private": false,
"sequence": 5
},
{
"target": "#message",
"command": "assign",
"value": "asdasd",
"url": "https://www.jsm.com/alert/create",
"dateExecuted": "2014-12-26T12:44:05.569Z",
"_id": "549d581552a9666f152ffb3a",
"passing": true,
"optional": false,
"private": false,
"sequence": 6
},
{
"target": "input[type=subm]",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/create",
"error": "Element not found",
"dateExecuted": "2014-12-26T12:44:15.885Z",
"_id": "549d581f52a9666f152ffb3b",
"passing": false,
"optional": false,
"private": false,
"sequence": 7
},
{
"target": ".alerts > .alertrow.clearfix.row:nth-of-type(2) > div:nth-of-type(2) > a.message.unseen",
"command": "assertTextPresent",
"value": "asdasd",
"_id": "549d581f52a9666f152ffb3c",
"passing": null,
"optional": false,
"private": false,
"sequence": 8
},
{
"target": "a[href=/alert/create] > .l.title",
"command": "assertTextPresent",
"value": "New Alert",
"_id": "549d581f52a9666f152ffb3d",
"passing": null,
"optional": false,
"private": false,
"sequence": 9
}
],
"viewportSize": {
"width": 1024,
"height": 768
}
}
}
Jira Service Management ではペイロードは次のように解析されます。
JSON
{
"passing": true,
"screenshotComparePassing": false,
"executionTime": 21641,
"dateExecutionStarted": "2014-12-26T12:43:54.597Z",
"startUrl": "https://www.jsm.com/auth/login",
"testId": "549d11f534fd04ab414f1bd7",
"testName": "Create Alert",
"testSuite": "549d10e134fd04ab414f1bd6",
"testOrganization": "549c158c8eebf29b7976b7b8",
"steps": [
{
"target": "#login",
"command": "click",
"value": "",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:56.719Z",
"_id": "549d580c52a9666f152ffb34",
"passing": true,
"optional": false,
"private": false,
"sequence": 0
},
{
"target": "#login",
"command": "assign",
"value": "abc@gmail.com",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:57.897Z",
"_id": "549d580d52a9666f152ffb35",
"passing": true,
"optional": false,
"private": false,
"sequence": 1
},
{
"target": "#password",
"command": "assign",
"value": "123",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:58.518Z",
"_id": "549d580e52a9666f152ffb36",
"passing": true,
"optional": false,
"private": true,
"sequence": 2
},
{
"target": "#password",
"command": "keypress",
"value": "13",
"url": "https://www.jsm.com/auth/login",
"dateExecuted": "2014-12-26T12:43:59.098Z",
"_id": "549d580f52a9666f152ffb37",
"passing": true,
"optional": false,
"private": false,
"sequence": 3
},
{
"target": "a[href=/alert/create] > .l.title",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/index",
"dateExecuted": "2014-12-26T12:44:03.269Z",
"_id": "549d581352a9666f152ffb38",
"optional": false,
"private": false,
"sequence": 4
},
{
"target": "#message",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/create",
"dateExecuted": "2014-12-26T12:44:04.767Z",
"_id": "549d581452a9666f152ffb39",
"passing": true,
"optional": false,
"private": false,
"sequence": 5
},
{
"target": "#message",
"command": "assign",
"value": "asdasd",
"url": "https://www.jsm.com/alert/create",
"dateExecuted": "2014-12-26T12:44:05.569Z",
"_id": "549d581552a9666f152ffb3a",
"passing": true,
"optional": false,
"private": false,
"sequence": 6
},
{
"target": "input[type=subm]",
"command": "click",
"value": "",
"url": "https://www.jsm.com/alert/create",
"error": "Element not found",
"dateExecuted": "2014-12-26T12:44:15.885Z",
"_id": "549d581f52a9666f152ffb3b",
"passing": false,
"optional": false,
"private": false,
"sequence": 7
},
{
"target": ".alerts > .alertrow.clearfix.row:nth-of-type(2) > div:nth-of-type(2) > a.message.unseen",
"command": "assertTextPresent",
"value": "asdasd",
"_id": "549d581f52a9666f152ffb3c",
"passing": null,
"optional": false,
"private": false,
"sequence": 8
},
{
"target": "a[href=/alert/create] > .l.title",
"command": "assertTextPresent",
"value": "New Alert",
"_id": "549d581f52a9666f152ffb3d",
"passing": null,
"optional": false,
"private": false,
"sequence": 9
}
],
"testUrl": "https://app.ghostinspector.com/results/549d11f534fd04ab414f1bd7",
"screenshotUrl": "${url}",
"screenshotCompareUrl": "https://ghostinspector.s3.amazonaws.com/screenshots/549d580a52a9666f152ffb33-compareSmall.png"
}
この内容はお役に立ちましたか?