Accel Studio テスト機能の紹介

はじめに

こんにちは。開発部のD.Yです。
今回の記事ではAccel Studio テスト機能を使って、WFの申請~承認のテストを自動化してみましたので、そのご紹介をしたいと思います。

Accel Studio テスト機能について

Accel Studio テスト機能 は、E2Eテストの自動化ツールです。
E2Eテストを自動化することで、以下の場合に、テストに費やす時間を短縮できます。

  • intra-mart Accel Platform のアップデート時
  • Accel Studio アプリケーションの変更時
  • ブラウザのアップデートや実行環境変更時

引用元 document.intra-mart.jp

環境構築

Accel Studio テスト機能のセットアップに関しては、下記を参照してください。

document.intra-mart.jp

WF申請~承認を自動化

今回は、以下の2ステップを自動化しました。

  1. 申請
    入力項目を埋めて申請処理を行い、案件が作成されていることを確認します。

  2. 承認
    コメントを入力して承認処理を行い、案件が完了していることを確認します。

申請画面

申請画面には以下のような入力項目があります。

項目 入力例 補足
タイトル 週次レポート 申請者が入力
日報 作業内容:タスクA完了、タスクB進行中 申請者が入力
提出日 2025/09/10 申請日をシステムで自動入力
申請者 青柳辰巳 申請者のユーザ名をシステムで自動入力

申請画面

承認画面

承認画面には以下のような入力項目があります。

項目 入力例 補足
コメント お疲れ様です。確認しました。 承認者が入力

承認画面

テストシナリオ

ここからは実際に作成したテストコードを紹介します。
申請と承認をそれぞれ独立したテストシナリオとして実装しました。

申請シナリオ

申請に必要な項目を入力し、システムが自動入力する項目に関しては既に入力されていることを確認します。
申請処理を行い、案件のステータスが「申請済み」になっていることを確認します。

import { test, expect } from '@playwright/test';
import * as workflowUtil from 'im-workflow-util';

test('test', async ({ page }) => {

  // ===== 対象のWFのフローIDと申請者 =====
  const TARGET_FLOW_ID = '8hq66svk2kg06gk-flow';
  const APPLY_USER_CD = 'aoyagi';

  // ===== 申請画面へ直接アクセス =====
  await page.goto('im_workflow/user/apply/apply_direct/' + TARGET_FLOW_ID);

  // ===== 入力操作 =====
  // タイトル入力
  await page.locator('#title').fill('週次レポート');

  // 日報入力
  await page.locator('#daily_report').fill('作業内容:タスクA完了、タスクB進行中');

  // ===== 自動入力項目の確認 =====
  // 提出日が空でないことを確認
  const submissionDate = await page.locator('#submission_date').inputValue();
  await expect(submissionDate).not.toBe('');

  // 申請者が空でないことを確認
  const applicant = await page.locator('#applicant').inputValue();
  await expect(applicant).not.toBe('');

  // ===== スクリーンショット =====
  await page.screenshot({ path: 'screenshot1.png' });

  // ===== 申請操作 =====
  // 申請ボタンをクリック
  await page.getByRole('button', { name: '申請' }).click();

  // モーダルで申請情報を入力
  await page.locator('#im-wf-inputs-flex-item-basic-information input[type="text"]')
    .fill('週次レポート申請');

  // モーダル内で申請ボタンをクリック
  await page.locator('#im-workflow-apply-modal').getByRole('button', { name: '申請' }).click();

  // 確認ダイアログで「はい」をクリック
  await page.getByRole('button', { name: 'はい' }).click();

  // ===== システム案件IDの取得とステータス確認 =====
  const systemMatterId = await workflowUtil.getSystemMatterIdFromActive(TARGET_FLOW_ID, APPLY_USER_CD);
  const status = await workflowUtil.getStatusInfo(systemMatterId);

  // ステータスが「申請済み」であることを確認
  expect(status).toBe('0');

});

承認シナリオ

コメントを入力して承認処理を行い、案件のステータスが「完了」になっていることを確認します。

import { test, expect } from '@playwright/test';
import * as workflowUtil from 'im-workflow-util';

test('test', async ({ page }) => {

  // ===== 対象のWFのフローIDと申請者 =====
  const TARGET_FLOW_ID = '8hq66svk2kg06gk-flow';
  const APPLY_USER_CD = 'aoyagi';

  // ===== システム案件IDの取得 =====
  const systemMatterId = await workflowUtil.getSystemMatterIdFromActive(TARGET_FLOW_ID, APPLY_USER_CD);

  // ===== 承認画面へ直接アクセス =====
  await page.goto('im_workflow/user/process/process_direct/' + systemMatterId);

  // ===== コメント入力 =====
  await page.locator('#approval_comment').fill('お疲れ様です。確認しました。');

  // ===== スクリーンショット =====
  await page.screenshot({ path: 'screenshot1.png' });

  // ===== 承認操作 =====
  await page.getByRole('button', { name: '処理' }).click();
  await page.getByRole('button', { name: '承認' }).click();
  await page.getByRole('button', { name: 'はい' }).click();

  // ステータスが「完了」であることを確認
  const status = await workflowUtil.getStatusInfo(systemMatterId);
  expect(status).toBe('1');

});

テスト実行

テスト定義詳細画面にて実行ボタンを押下するとテストを実行できます。

テスト定義詳細画面

テスト結果

実行したテストは、テスト結果詳細画面で確認できます。

テスト結果詳細画面

上記のように「実行に成功しました。」と表示され、テストがシナリオ通りに正常終了したことを確認することができます。
シナリオ内で取得したスクリーンショットや実行ログがこの画面で確認できます。

スクリーンショットを残すことで、実行ログだけではわかりにくい「画面の状態」を後から確認できるため、テストが失敗した場合でも原因調査がしやすくなります。

おわりに

今回はAccel Studio テスト機能を使ったWFのテスト自動化について紹介しました。
WFの申請~承認のような定型的な操作を自動化すれば、ヒューマンエラーを防ぎつつ、リグレッションテストを効率的に実行できます。
一度シナリオを作成しておけば、intra-mart Accel Platform のアップデートやブラウザ・実行環境の変更時にも繰り返し利用できるため、ぜひ積極的に自動化を進めて効率化と品質向上を実現していきましょう。