テストはPlaywright、Selenium、pytestのままご利用いただけます。それらを置き換えることはありません。テストをエンタープライズ対応にし、コード、エビデンス、履歴などすべての所有権はお客様に帰属します。

スタジオの全画面、およびその機能。

テストの作成、実行、スケジュール設定、および判定はこれらの画面から行います。コマンドラインはパイプライン用として引き続き利用できます。

テストは標準的なPlaywright、Selenium、pytestのコードですか?

ファイルの外観

はい。Studioが作成またはインポートするすべてのテストは、チームがすでに使い慣れているフレームワークのコードです。エンジンはその周囲にエビデンス、テレメトリ、判定、自己修復機能を追加するのであり、コードを置き換えることはありません。

  • Playwright、JavaScript および TypeScript:Playwright Test ファイルです。上部のフィクスチャインポートは Studio のものです。本体は page、ロケーター、および expect です。
  • Playwright、Python:通常の pytest-playwright で、page を受け取る test_ 関数です。pytest 単体で実行できます。
  • Selenium、Python:driver フィクスチャを使用した pytest です。ワークスペースの conftest.py は、エンジンが実行中でない場合に通常の WebDriver にフォールバックします。
  • Selenium、JavaScript:run({ driver, By, until }) 内の selenium-webdriver コードです。Studio のランナーがドライバーをビルドして終了します。
  • Selenium、Java:JUnit 5を使用し、@ExtendWith(NexusExtension.class)を付与します。エクステンションからWebDriverパラメーターが提供されます。Mavenでビルドします。
  • SeleniumおよびPlaywright、C#:NUnitを使用し、NexusSeleniumTestまたはNexusPageTestを継承したクラスを作成します。.NETでビルドします。
  • API テストは Studio 独自の JavaScript 形式を使用します。

移行方法

テスト、エビデンス、履歴はワークスペース内のファイルです。Nexus なしでスイートを実行するには:Python テストはそのまま実行できます。Playwright JavaScript のインポートは @playwright/test に戻してください(ビジュアルチェックポイントを追加した場合は置き換えが必要です)。Selenium JavaScript の run() 関数には、ドライバーを起動する数行を追加してください。API テストは別のランナー向けに書き直す必要があります。

作成

Patrol

テストの作成、実行、スケジュール設定を行う場所です。ツリーにはすべてのテストがブラウザごとのロゴとともに表示され、その状態に応じて色分けされています。エディタ上部の実行ストリップには、各ブラウザの動作状況が言葉で表示されます。

  • 5つのタブ:テストケース、実行パトロール、Nexus Recorder、AIライター、テストアダプター。
  • ターゲット:デスクトップマトリックス(Chromium、Firefox、WebKit)、モバイルエミュレート、実機デバイス(実際のAndroid端末)、またはデスクトップ+実機デバイス(PCとAndroid端末を同時に使用)。証拠はIDごとに記録されます。
  • デフォルトではブラウザを1つずつ順番に実行しますが、設定により最大3つのブラウザと複数のテストを同時に実行できます。SeleniumはChromiumとFirefoxで動作します。
  • 新しいテストは履歴を記録しないサンドボックスで事前にリハーサルを行い、その後から実行回数がカウントされます。
  • フィーチャーフラグ:各フラグはオン・オフ、またはその両方で実行され、Cookie、ヘッダー、ローカルストレージ、またはクエリ文字列で送信されます。テストが失敗した組み合わせはカードに表示されます。

AI writer

入力した説明をもとにテストを作成します。使用するAIは、ご自身のAIコマンドラインツール(Claude Code、Codex、またはopencode)、API、ローカルのOllamaモデル、Anthropic、またはOpenAIからお選びいただけます。PlaywrightはJavaScript、TypeScript、Python、C#で、SeleniumはJavaScript、Python、Java、C#でテストを作成します。

  • 3つの作業方法:AIとチャット、ステップバイステップ(ケースを計画し、選んだものを作成)、またはエージェントを持ち込む(ご自身のターミナルでエージェント向けブリーフィングを作成)。
  • アプリの最大4ページを読み取ることができます。読み取り専用で、サインインは不要です。これにより、テストは実際の要素名を使用します。
  • CLIは空のフォルダでツール不要で実行でき、専用の読み取り専用サンドボックス内でも動作します。各接続先への同意は事前にご確認いただきます。
  • すべてのテストはVet(AIを使わない7項目のチェック)に合格する必要があります:テストIDがある、パースできる、Studioのフィクスチャを使用している、ページ外にアクセスしない、失敗し得るアサーションがある、スリープ・強制クリック・モックがない、そして壊れやすいロケーターがないこと。
  • 試すは、証拠や履歴に何も記録しないドラフトとしてChromiumでテストを2回実行します。承認はコードを開くまで無効のままです。

ご自身のAI(専用コマンドライン経由)

  • Claude Code
  • Codex
  • opencode

ライターは、このマシンですでにサインイン済みのCLIを起動するため、StudioにAPIキーを貼り付ける必要はありません。そのツールでのご利用プランはそのまま適用されます。別の方法として、プロバイダーのAPIキーまたはローカルのOllamaモデルをご利用いただくこともできます。

スタジオがClaude Codeを起動する方法(引数を一つひとつ確認しながら):

claude -p --output-format json --tools "" --disable-slash-commands

--strict-mcp-config --setting-sources "" --no-session-persistence

--permission-mode dontAsk --max-budget-usd 1

プロンプトは標準入力で渡されます。ツールなし、MCPサーバーなし、お客様独自の設定やフックなし、セッションへの保存なし、そしてすべての呼び出しに支出上限が設定されています。デフォルトは1米ドルです。

Nexus Recorder

ブラウザでの操作をテストコードとして記録します。AIは関与しません。クリックした内容がそのままコードに書き出されます。

  • デスクトップ、モバイルエミュレーション、または実機デバイス(USB接続のAndroid端末でその端末のChromeを操作)で記録できます。現時点ではJavaScriptとPythonのみ対応しており、JavaとC#はデスクトップでの記録に対応しています。
  • JavaScriptまたはTypeScript、Python、C#でPlaywrightを、JavaScriptまたはPython、Java、C#でSeleniumをそれぞれ生成します。
  • また、ページが行うAPIコールをRESTまたはGraphQLのテストとして記録することもできます。認証ヘッダーやCookieヘッダーは含まれず、機密情報と思われるフィールドは環境変数に変換されます。
  • セレクターマップはAIを使わずにページをスキャンし、各セレクターをHIGH・MEDIUM・LOWで評価して、マップをディスクに保存します。

Test Adapter

チームがすでに保有しているテストを、手作業で書き直すことなくスタジオに取り込めます。

  • テストをペースト、ファイルをドロップ、またはフォルダーを指定してください。対応はPlaywright Testまたはmocharまたはjestまたはpytestまたはunittestで記述されたJavaScript・TypeScript・PythonのPlaywrightまたはSeleniumです。
  • 書き換えはAIではなくルールに基づいて行われます。ブラウザの起動とセットアップはスタジオのフィクスチャーに移動し、アサーション・条件・ループ・待機処理はそのまま維持されます。
  • 差分を並べて表示し、インポート前後のアサーション数を確認できます。アサーションが失われた場合は、行ごとに承認しない限りインポートがブロックされます。
  • オプションのAIはルールでカバーできない箇所のみを処理し、そのコードは厳格なVetの審査を受けます。取り込み済みのテストはサンドボックス内で3回連続クリーン実行されるまでリハーサルを行います。
  • Cypress、WebdriverIO、Robot Framework、JavaおよびC#はサポートされていません。

修復ラインとセルフヒーリング

ロケーターが壊れたときに何が起きるか。裏側で勝手に修復されることはありません。

  • セルフヒーリング(デフォルトでは「提案」に設定):失敗後、バックグラウンドのブラウザーがテストを失敗した行まで再生してページを読み込み、候補を準備します。AIは使用せず、テストは赤いままです。
  • 修復ライン(その行のガターから):そのステップだけを再記録するか、セレクターを入れ替えます(最も強いものを優先し、XPathを最後に)。変更は未保存の状態でエディターに反映され、保存することが承認となります。
  • AIに選ばせると候補を並び替えることができますが、新たに追加することはありません。ファイルの以前のバージョンはタイムラインに残ります。
  • ロケーターの健全性では、開いているテストの弱いロケーターを一覧表示し、同じ方法で修復します。

実行

Devices & Mobile

エンジンを実行するマシンにUSBで接続された実際のAndroid端末です。デバイスファームや購入が必要な分数はありません。

  • adbとChrome DevTools Protocolを使用して複数の端末を同時に接続でき、最初の端末を接続するためのガイドも用意されています。
  • 画面視聴では、端末の画面をPCにミラーリングします。この画面からは操作でき、Patrolから開いた場合は閲覧のみとなります。
  • Playwrightのデバイスプロファイルによるモバイルエミュレーション:AndroidのChrome、WebKit上のiPhoneまたはiPad(Safariのエンジン)、および低スペックプロファイルに対応しています。実機はAndroid端末のみです。iPhoneやiPadはエミュレートされるため、物理的なAppleデバイスは使用されず、iOSのキーボードやシステムジェスチャーはテストされません。
  • 端末でのテストは一度に1件ずつ実行され、端末での実行は常に端末が接続されているマシン上で行われます。

Watch

Patrolの「Run patrol」から:タイマーで選択したテストを無人で再実行します。

  • 5分から24時間ごとに繰り返す、または指定日時に1回実行できます。停止するか、実行回数に達するか、指定日時になると終了します。
  • 独自のプロセスとして実行されるため、Studioを閉じても停止しません。そのマシンの電源が必要です。スリープ中はスケジュールされた実行が待機またはスキップされます。
  • TelegramまたはSlackへの通知は、状態がALERTまたはRECOVEREDに変化したときのみ送信されます。

CI/CD

パイプラインをYAMLエディターではなく、画面上で設定します。

  • GitHub ActionsまたはGitLab CIファイルを作成します。内容には、ブラウザー、ビジュアル、アクセシビリティ、カオス、ループおよびリトライの設定が含まれ、GitHubの場合はお選びいただいたテストでUTC時刻に基づく夜間リグレッションも含まれます。
  • クラウドホスト型ランナー、ご自身のマシン、またはDockerを使用したご自身のマシンで動作し、bashまたはPowerShell用のランナースクリプトが用意されています。
  • 最初にパイプラインをローカルで検証し、同じ画面からコミットおよびプッシュします。リモート実行もここから開始でき、エビデンスをダウンロードできます。
  • CI向けのスクリプト実行にも対応:nexus ciは合格時に0、失敗時に1、何も実行されなかった場合に2で終了し、JUnit XMLを出力します。CI/CDからテストを実行する

Docker と SSH

Studio は Windows 11 のデスクトップアプリで、お使いの PC、または必要に応じて Windows 11 のミニ PC で動作します。エンジンはここから、ワークスペースのスイートをこのマシン上、その上の Docker、または別のマシンへの SSH 経由で実行します。Studio 自体は Docker や SSH 上では動作しません。

  • Dockerでは、スイートはrunnerコンテナー内の同じディスク上で実行されるため、エビデンスは通常どおりワークスペースに保存されます。
  • SSH経由では、Ubuntu 24.04 LTS、Docker Engine、Compose v2を備え、鍵認証でアクセス可能なVPS上で実行されます。エンジンは、ローカルのDockerと同じコンテナイメージを使用してそこでスイートを実行し、エビデンスはお客様が取得(プル)するまでその場所に保持されます。
  • 実機のAndroid端末、SeleniumおよびPythonスイート、インフラストラクチャのカオスおよび結果のインポートは、常にStudio自身のマシン上で実行されます。
  • トップバーにはワークスペースの実行場所、RAMおよびCPUの状況が表示されます。アダプティブペーシングをオンにすると、空きRAMに合わせてブラウザーのサイズが即座に調整されます。

Studioは実行の証拠として何を保持しますか?

Evidence Locker

すべての結果を、読みやすくトリアージしやすい場所に保存します。

  • テスト結果、実行サマリー、バグレポート、合格テスト、履歴インテリジェンス、リスクランキング、Core Web Vitals、セキュリティ監査、カオス耐性、およびAPIテストのセクションが含まれています。
  • 各レコードはReport、Metadata、Telemetry、Raw Log、およびAI Analysisで開き、最後の項目はデフォルトでオンになっており、接続されたお客様のAIによる情報が表示されます。失敗時にはフォレンジックレポート、メタデータ、最終フレームのスクリーンショット1枚が記録され、本物の失敗の場合は動画も保存されます(どの判定を対象にするかは、設定の「Keep failure video for」で選択可能です)。Raw Logにはコンソールエラー、失敗したリクエスト、セキュリティ問題、ページエラーが保持されます。トレースがオン(デフォルト)の間は、トレースも保持されます。
  • トリアージ:Real bugまたはFalse alarmを選択し、必須の理由、カウントするかどうか、およびファイルの扱い(保持する、重要なものをアーカイブする、または削除する)を指定します。
  • Telegram、Slack、Jira、Azure Boardsへの共有、画像のコピー、完全なHTMLレポートのエクスポートが可能です。チャンネルを選択して送信を押すまで、マシンからデータが送信されることはありません。

実際の障害1件のフォルダー(ファイルごとの表示)→

APIテスト

独自の7つの判定基準を備えたRESTおよびGraphQLテストです。他のテストと同様にPatrolから実行され、各エンドポイントはEvidence LockerのAPIテストセクションに個別のフォルダーを作成します。

  • API_SECURE: すべてのアサーションが満たされ、レスポンスの形状が最後に記録されたものと一致しています。API_FLAKY: 再試行で合格しました。API_DRIFTED: 合格したものの形状が変更されており、差分には追加、削除、または型の再定義が行われた各フィールドが示されます。ドリフトは厳格モードに設定するまで合格としてカウントされます。
  • API_BREACHED: アサーションが失敗しました。API_DEGRADED: レイテンシ許容量(デフォルトは2000 ms)よりも遅く、パフォーマンスが厳格に設定されている場合のみ判定されます。API_VULNERABLE: 401または403が想定される場面で、認証情報のないリクエストに応答が返されました(セキュリティヘッダーの欠落のみではこの判定にはなりません)。API_BLOCKED: 429、またはCloudflareやAkamaiの署名を含む403が返され、リクエストが製品に届きませんでした。
  • 画面上には、エンドポイント、合格、許容量を超えた実行、形状の変更、過去の脆弱性検出、観測された最長遅延のタイルが表示されます。フィルター(すべて、失敗、ドリフト、脆弱)と、エンドポイント、判定、最小値、中央値、p95、最大値、n、合格率のテーブルも備えています。観測数が20未満のエンドポイントには、パーセンタイルではなくダッシュが表示されます。
  • 実行結果をクリックすると、6つのタブ(Report、Request、Response、Performance、Schema、接続されたAIによるAI Analysis)で開きます。フローのステップが失敗した場合は、ステップNから再実行や失敗したステップを再実行が利用できます。
  • 実行ごとにapi-evidenceに保存されるファイル: request.json、response.json、performance.json、schema.json、report.md、metadata.json(ヘッダーとボディのシークレットはマスキング済み)。report.mdの末尾には、コールを再現するためのcurlコマンドが含まれます。合格した実行はテストごとに最新の20件が保持され、失敗した実行は常に保持されます。
  • 作成方法: 「New test」から「API」を選択し、Type(REST、GraphQL、またはSOAP over HTTP)を指定します。各Typeは、公開エンドポイントに対して記述通りに実行できるケースから開始され、ファイルの1行目にTypeが記録されるため、ファイルツリー上で識別でき、ファイルを移動してもTypeが変わることはありません。SOAPはテキストとして送信されるXMLであり、XMLパーサーを使わずにテキストルールで検証されます。stagingやprodなどの環境ごとに独自のベースURLが保持され、トークンは変数名としてのみ保持されます。フォルダーは階層構造にネストできます。
  • API Flow Recorder: Nexus Recorderでページが実行するコールを記録し、スイートの書き出し前に記録を確認します。Callsには、各コールのメソッド、パス、ステータス、カテゴリ、理由が一覧表示されます。初期状態では、ビジネス、認証、読み取り、状態変更を伴うAPIコールのみがスイートに含まれます。テレメトリビーコン、サードパーティホスト、アセット、プリフライトは除外されますが、チェックを入れて再度含めることも可能です。Flowsはログイン トークンなどのレスポンスの値を後続のリクエストに連携させ、Redactionsには書き出さないようマークされたシークレットと見なされるフィールドが一覧表示されます。
  • レビュー画面からの操作: テストの生成でスイートを書き出し、OpenAPIの生成で記録された値を含めずに型とステータスコードを持つ3.1ドラフトを書き出し、負荷テストでコールを負荷計画として開きます。

Schemaタブに表示されるドリフト

APIT311-1 GET /api/productsList API_DRIFTED

+6 fields, -2 fields

+ products[].brand + products[].id + products[].name + products[].price

+ products[].category.category + products[].category.usertype.usertype

- brands[].brand - brands[].id

APIT311は、意図的にドリフトを発生させるように作成されたデモテストです。本番APIはオンデマンドで変更されないため、連続する実行で2つのカタログエンドポイントを交互に切り替え、2回目の実行でAPI_DRIFTEDと判定されます。ドリフトとは、ステータス200に関するアサーションには合格しつつも、利用者が本番環境で直面する変更のことです。

テストが見落とす前にAPIスキーマのドリフトを検出するにはどうすればよいですか?

History

各IDで実行した各テスト、実行ごとの結果。

  • サマリー、信頼性、パフォーマンス、API、障害、カバレッジ、品質、ならびにユニットおよびインテグレーション結果のタブが用意されています。
  • セッション、日、または週ごとのトレンド:Regressed、Recovered、Still broken、Slower。アイデンティティマトリクスは、すべてのテストをすべてのブラウザーおよびデバイスに対して照合します。
  • ユニットおよびインテグレーション:Jest、Vitest、pytest、MavenまたはgotestsumからJUnit XMLをインポートし、エンドツーエンドの数値とは別に管理されます。
  • リスクは、エビデンスロッカーおよびパトロールにおいて、テストが反転・失敗・時間を要する頻度によるランキングを示します。5回未満の実行では不安定とは見なされず、ロジスティック回帰によるリスク予測と、データが少ない場合のEWMAフォールバックが利用されます。

履歴の1行が保持する内容 →

Visual Regression

承認済みの画像に対するピクセル単位の比較です。--visualを指定した初回実行でベースラインが設定され、以降のすべての実行がそれと比較されます。画面は決定が必要な項目(移動したピクセル)が開いた状態で表示されます。

  • 各リグレッションはカード形式で表示されます: テスト、チェックポイント、許容量に対する移動ピクセルの割合(「M px中N px」)、寸法、変更されたエリアの数、およびキャプチャが安定しなかった場合のメモ。アンチエイリアスによって再ブレンドされたエッジピクセルはカウントされません。
  • 並べて表示、スワイプ、差分、点滅の各ビューと、同じチェックポイントの過去の実行が確認できます: 1回のリグレッションは事実であり、4回連続で少しずつ悪化している場合はUIのドリフト、4回同一のものは不安定な対象に対して記録されたテストを意味します。
  • ベースラインはブラウザおよびプラットフォームごとに保持されます。この変更を承認はそのチェックポイントの画像のみを置き換えます。すべて承認はグローバルヘッダーなど、多くに影響を与える変更向けです。
  • 同一画面上の設定とデフォルト値: 毎回の実行でピクセルを比較(オフ)、ページ全体の許容量(1.0%)、要素チェックポイントの許容量(0.1%)、リグレッションでテストを失敗(オフ: リグレッションが記録されテストはSECUREのまま / オン: BREACHEDと判定)、および時計や広告向けのすべての写真でマスク(CSSセレクター)。
  • visual-regression 内のリグレッションごとに保存されます: baseline.png、current.png、diff.png(赤は変更、黄はアンチエイリアスとして無視、グレーは変更なし)、visual-report.md、result.json。テストおよびチェックポイントごとに最新の10件が保持され、1セットあたり約 1 MB です。

単一要素に対するチェックポイント

nexus patrol TC01 --visual

# テスト内: ページ全体ではなく単一の要素

await visualCheck(page, 'cart-total', page.locator('#cart-total'));

要素チェックポイントの許容値は、ビューポート全体に必要な許容値の10分の1に抑えられています。スコープを絞り込むことで、時計や広告によってテストが失敗することなく、厳格なチェックが可能になります。すべての検証をパスしてしまうものの、余白、色、またはレイアウトの変更によってページが崩れる可能性がある場合に使用してください。許容値を上げるのではなく、意図的に変化する部分をマスクしてください。

Executive Report

リリースの品質を1枚のPDFにまとめ、承認者に提供します。

  • 期間を選択してください:全期間、過去7日・30日・90日、またはカスタム範囲。
  • リリース判定として、実行可・要注意・実行不可を、信頼度・カバレッジ・合格率とともに表示します。
  • 失敗項目とその根本原因およびビジネスへの影響、テスト別の安定性、セキュリティの検出結果、APIテスト、エンドツーエンド・統合・ユニット結果による品質ピラミッドを表示します。
  • 推奨事項はルールに基づくものであり、AIによるものではありません。

ストレステストとセキュリティ

Chaos Lab

ブラウザからコンテナまで、レジリエンステストを実施します。

  • ブラウザの障害として、Network (≈3G) の遅延、テスト中の Offline blackout、Chromium上での CPU throttle 4x、またはこれらすべてを同時に適用でき、パケットロストやメモリ負荷を追加することも可能です。
  • インフラストラクチャ:Docker コンテナまたはテスト対象アプリを登録し、テストの実行中かどうかに関わらず、一時停止・停止・強制終了・再起動を行えます。
  • 500ミリ秒ごとのヘルスプローブで回復状況を測定し、検出までの時間・回復までの時間・可用性を記録します。結果は RESILIENT・DEGRADED・NOT_RECOVERED・NOT_INJECTED のいずれかで表示されます。
  • 対象は登録済みのターゲットのみであり、Studio 自体のコンテナは対象外です。障害は実行前に記録され、常に復元されます。また、障害が発生しなかった場合の合格は、レジリエントとは見なされません。

Load

エンジン自体による並行処理・パーセンタイル・判定結果を提供します。

  • エンジン内のワーカースレッドを使用し、外部ロードツールは不要で、ラベルごとの statistics.json ファイルにレポートを出力します。
  • 1秒あたりのリクエスト数、p50、p90、p95、p99、エラーレート、APDEX。判定結果はPASS、OVER_BUDGET、またはUNMEASUREDです。
  • 負荷下でWeb Vitalsを計測します:実際のChromiumページを負荷前、負荷中は15秒ごと、負荷後にサンプリングし、LCP、CLS、FCP、TTFB、TBTを取得します。
  • ARMEDになるのはAUTHORIZEDと入力した後のみで、対象がこのマシン以外の場合は再度確認を求めます。

セキュリティ

設定したセキュリティチェックを実行し、その証拠とともに検出結果を記録します。DASTスキャナーである Smart Monkey は、Security 画面の Run a scan にあります。

  • Smart Monkeyは、テストを許可された対象をスキャンします:XSS、SQLインジェクション、アクセス制御の不備、IDOR、SSRF、コマンドインジェクション、パストラバーサル、テンプレートインジェクション、XXE、オープンリダイレクト、CORS、セキュリティヘッダー、Cookieフラグなどに対応しています。
  • フェーズを選択するか、すべてを実行します: pre-auth、auth-transit、post-auth、http-probes(Cookie、CORS、ヘッダー、リダイレクト、ファイル)、ssrf、cmdi、xss-oob、sqli(ブラインド、ブーリアン、時間ベース)、idor、または agent(オーケストレーションされ、予算管理されたディスカバリー)。選択したフェーズの説明がわかりやすい言葉で表示されます。
  • 帯域外(Out-of-band)確認には、ご自身のマシン上の HTTP リスナーが使用されます。各ペイロードにはランダムな 32 文字のトークンが含まれており、ターゲットがそのトークンでコールバックしてきた場合にのみ、SSRF、コマンドインジェクション、ブラインド XSS がカウントされます。DNS コールバックや Interactsh、Burp Collaborator などのパブリックサービスは使用しないため、ターゲットに関する情報が第三者に送信されることはありません。
  • テストの承認: 記録された根拠のないホストはパケットが送信される前に拒否されますが、プライベートアドレスおよびローカルアドレスは承認なしで通過します。すべてのスキャンにおいて、その承認情報、オペレーター、ターゲット、操作、および 60 分の有効ウィンドウが記録され、ローカルで保護されて外部に送信されることはありません。
  • 各セッションは、検出結果ごとに1つのフォルダーを保存します。フォルダーには audit_report.json、screenshot.png、録画が残っている場合は replay.webm、そして nexus replay が検出結果のフォルダーに対して実行する実行可能な replay.mjs が含まれます。セッションのルートには session_summary.json と results.sarif が追加されます。最新の 10 セッションが保持されます。
  • SARIF 2.1.0、検出結果ごとに1つの結果: ルールは検出結果の CWE、CRITICAL および HIGH は error、MEDIUM は warning、その他は note となり、ロケーションは調査対象の URL となります。GitHub code scanning および GitLab に直接取り込むことができ、Studio がなくても CI ランナー上で nexus monkey がこれを出力します。

ディスク上の1つのセッション

monkey-audits/YYYY-MM-DD_HH-mm-ss_FAST_AUDIT/

session_summary.json results.sarif

BUG-NN_TYPE/ audit_report.json screenshot.png replay.webm replay.mjs

フォルダーには UTC でタイムスタンプが付与され、末尾に FAST_AUDIT または DEEP_AUDIT が付きます。検出結果はそのフォルダー内で完結しているため、スクリーンショット、録画、再現スクリプトを添えて修正担当者に渡すことができます。Evidence Locker の Archive… でもこれらのパーツが保持されます。リリース前、またはご自身が所有しているかテスト権限のあるターゲットに対してご使用ください。

Settings

実行中の品質チェック

Run patrolまたはSettingsで実行ごとに有効化できます。各チェックは厳格モードに設定するまでは参考情報として扱われ、厳格モードにすると判定結果に影響します。

  • axe-coreを使用したWCAG 2.1 AAに基づくアクセシビリティチェック、およびスマートフォンでのタッチターゲットサイズの確認。
  • バジェットに対するWeb Vitals(LCP 2.5秒、CLS 0.1、INP 200ミリ秒、TTFB 800ミリ秒)、およびページの画像読み込み方法をAからFで評価する遅延読み込み監査。
  • ブロック検出:403、429、またはチャレンジページが表示された場合はBLOCKEDと判定されます。自動化シグナルはデフォルトでサイトから隠されており、スイッチ一つでオフにできます。
  • 厳格モードでは、違反がA11Y_VIOLATION、PERFORMANCE_DEGRADED、またはSECURITY_VIOLATIONとして記録されます。

Timeouts

実行がTIMEOUTと判定されるまでにPlaywrightのステップが待機できる時間です。Settingsの「Execution & Timeouts」に4つのダイヤルがあります。以下の値はデフォルト値です。

Settings · Execution & Timeouts

  • Action timeout (click, fill…)30000 msNEXUS_ACTION_TIMEOUT · every click, fill or wait on a locator
  • Assertion timeout10000 msNEXUS_EXPECT_TIMEOUT · how long an expect() keeps retrying
  • Page navigation timeout60000 msNEXUS_NAV_TIMEOUT · page.goto() and its redirects
  • Per-test hard timeout360 sNEXUS_TC_TIMEOUT · the whole test, six minutes

1つのステップに対して、テストのコード内で標準的なPlaywrightの方法により独自の制限を設定できます:

await page.getByRole('link', { name: 'More information...' }).click({ timeout: 5000 });

await expect(page.getByRole('heading', { level: 1 })).toHaveText('Example Domain', { timeout: 15000 });

TC91は、example.comの古いリンクテキスト「More information...」に対して意図的に作成されたデモテストです。現在のページでは「Learn more」と表示されています。クリック処理はデフォルトの30000ミリ秒待機しましたが、対象のリンクは存在せず、TIMEOUTと判定されました。制限時間を長くしても壊れた要素は隠せません:失敗するタイミングが遅くなるだけです。

AI Providers

障害のフォレンジック分析およびSmart Monkey検出結果のトリアージを担うAIです。

  • ローカルのみがデフォルト設定です:Ollamaを通じてこのマシン上のモデルを使用し、クラウドへのフォールバックはありません。
  • Auto、Anthropic、またはOpenAIをお選びいただけます。プロンプトがネットワーク外に送信される際は画面に明示されます。キーは書き込み専用です。

Settings

他の画面の裏にあるスイッチを、一か所にまとめています。

  • 連携機能:Jira、Xray、Azure DevOps、Slack、Telegram。有効にするまですべてオフになっています。JiraとAzure Boardsは失敗したテストごとに1つの課題を保持します。失敗(BREACHED、BREACHED_FLAKY、CHAOS_BREACHED)またはTIMEOUTによって課題がオープンされ、再実行によってコメントが追加され、問題なく合格するとクローズされます。ブロック、クラッシュ、接続不可サイト、設定エラーは対象外です。連携機能
  • エビデンスと保持設定:各テストが保持するバグレポート、合格時のスクリーンショット、スキャンセッションの件数です。
  • セレクターとセルフヒーリング、RAMの負荷に応じた自動ペース調整、およびブラウザに表示される自動化シグナルです。

全機能一覧

さらに19の機能を一目で

Nexus Recorder

フローをPlaywright(JavaScript、TypeScript、Python、C#)またはSelenium(JavaScript、Python、Java、C#)に記録できます。JavaScriptとPythonはデスクトップ、エミュレートされたモバイル端末、または実際のAndroid端末で、その他はデスクトップでご利用いただけます。アプリが行うAPIコールを記録することも可能です。AIは介在しません。

Test Adapter

テストを貼り付けるか、フォルダーを指定してください。JavaScript、TypeScript、またはPythonによるPlaywrightまたはSeleniumに対応しています。差分を表示し、すべてのアサーションを保持し、カウント前にテストをリハーサルします。

Repair line

テストが失敗した行から:そのステップだけを再記録するか、セレクターを入れ替えることができます。優先度の高いものから順に適用され、XPathは最後になります。旧バージョンはファイルのタイムラインに残ります。

確認してから実行するセルフヒーリング

失敗後、Studioはバックグラウンドでその行までテストを再生し、候補セレクターを準備します。いずれかを選択するまで、実行結果は失敗のままになります。

ロケーターのヘルスとセレクターマップ

開いているテストの脆弱なロケーターを一覧表示し、その場で修正します。セレクターマップはAIを使わずにページをスキャンし、見つかったすべてのセレクターを評価します。

Watch

5分から24時間ごと、または指定日時に一度、選択した項目を再実行し、状態が変化した場合にのみアラートを送信します。Studioを閉じた後も実行は継続されます。

CI/CDを画面上で設定

GitHubActionsまたはGitLab CIパイプラインを作成し、夜間リグレッションを含め、まずローカルで検証します。パイプライン自体については、厳格な終了コードとJUnit XMLを使用します。

Feature flags

フラグのオンとオフの各バリアントごとにテストを1回実行し、失敗した組み合わせを名前で示します。

品質ピラミッド

Jest、Vitest、pytest、MavenまたはgotestsumからJUnit XMLをインポートし、エンドツーエンドの実行結果の横にユニットテストおよびインテグレーションテストの結果を表示します。

リスクランキングと予測

各IDの各テストについて、フリップ、失敗、または時間コストの頻度でランク付けします。独自の履歴に基づくロジスティック回帰によりリスクスコアを付与し、データが少ない場合はEWMAにフォールバックします。

ビジュアルリグレッション

ブラウザおよびプラットフォームごとに保持されたベースラインと並べて比較、スワイプ、差分表示、またはブリンク比較を行い、ワンクリックで変更を承認できます。

アクセシビリティ

axe-coreによるWCAG 2.1 AAチェックに加え、スマートフォンでのタッチターゲットサイズも確認します。デフォルトは勧告モードで、厳格モードでは違反がA11Y_VIOLATIONとして報告されます。

Web Vitalsと遅延読み込み

LCP、CLS、INP、FCP、TTFBおよびTBTはデフォルトで有効になっており、バジェットに基づいて評価されます。また、ページの画像読み込み方法を採点する遅延読み込み監査も含まれます。

ブロック検出

403、429、またはボットチャレンジページはBLOCKEDとして読み取られ、アプリの失敗とは見なされず、Jiraチケットも作成されません。

APIスイート

RESTおよびGraphQL:ステータス、フィールド、型、レイテンシバジェットを確認し、独自の判定を行うとともに、リクエスト、レスポンス、スキーマをエビデンスとして記録します。

エグゼクティブレポート

リリース判定(ゴー、注意、またはノーゴー)、カバレッジ、安定性、根本原因別の失敗、セキュリティの所見、およびルールベースの推奨事項を記載したPDFです。

Jira、Xray、Azure DevOps、Slack、Telegram

JiraとAzure Boardsは失敗したテストごとにスクリーンショットを添付した課題を1つ保持し、テストが合格するとそれをクローズします。XrayとAzure Test Plansは各CI実行の結果を受け取ります。SlackはBlock Kitアラートを受け取り、TelegramはQRでペアリングされたお客様独自のボットからアラートを受け取ります。

Docker と SSH

エンジンは、Studioのマシン上のランナーコンテナ内、またはVPS上のSSH経由にて同一のコンテナイメージで同じスイートを実行し、同一の判定結果を出力します。ランタイムはワークスペースごとに選択可能です。SSH経由の場合、エビデンスはお客様が取得(プル)するまでそのホスト上に保持されます。

デスクトップアプリ

Nexus Studio(Windows 11 x64対応)は、RAMが16 GB以上のPCまたはミニPCにインストールしてご利用いただけます。実行結果、エビデンス、デバイス、履歴をひとつのウィンドウで確認できます。

お客様ご自身のアプリですべての画面をお試しください。

30日間無料、全機能を搭載、お使いのマシンで。カード不要。