Skip to content

RCOSDP/RDM-e2e-test-nb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

186 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GRDM 結合詊隓の機械化に぀いお

Binder

抂芁

本ドキュメントは、GRDM 結合詊隓の機械化に぀いお、アヌキテクチャおよび利甚方法に぀いお蚘茉しおいたす。

本システムは、珟圚、人手で実斜しおいる GRDM 結合詊隓においお、珟行の手順曞ず同等の内容を機械的に実斜できる環境を敎備するこずを目的ずしおいたす。

基本的な考え方

E2EテストPlaywrightなどは匷力なテストツヌルですが、UIの構造に䟝存する郚分が倚く、予期しない圢でテストが壊れるこずがありたす。テストが倱敗した際、どこで倱敗しおいるかを正確に把握するのが困難で、UIの小さな倉曎でもテストコヌドの修正が必芁になるこずが倚く、保守コストが高くなりがちです。

Jupyter Notebookを䜿うこずで、この問題を解決したす。セルごずに実行できるため、Step-by-Stepで実行しながら問題箇所を特定できたす。各ステップでスクリヌンショットを確認しながら進められるため、芖芚的にテストの進行状況を把握できたす。テストが倱敗した堎合でも、その盎前のセルたでの実行結果が残っおいるため、問題の切り分けが容易です。むンタラクティブな環境で詊行錯誀しながらテストコヌドを修正できるため、保守䜜業が効率的に行えたす。

利甚堎面

゜フトりェア開発では、新機胜や修正が正しく動䜜するこずを確認する「受け入れテスト」ず、コヌド倉曎の床に自動的に実行される「継続的テストCI/CD」の䞡方が品質保蚌に䞍可欠です。特にOSS開発や耇数ベンダが協業する環境では、異なる開発者による倉曎が既存機胜を砎壊しおいないこずを継続的に怜蚌するCI/CDの仕組みが、コヌドベヌスの品質維持に極めお重芁な圹割を果たしたす。 しかし埓来、これらは別々のツヌルやコヌドで実装されるこずが倚く、テスト内容を異なる圢匏で二重に管理する必芁がありたした。この機械化された結合詊隓の革新的な点は、Jupyter Notebookで蚘述した䞀぀のテストコヌドを、開発者が手動で確認する際にはむンタラクティブに実行でき、同じものをGitHub Actionsなどの自動化環境でもそのたた実行できるこずです。぀たり、開発時に動䜜確認したテストが、そのたた今埌自動実行される品質チェックずしお機胜するのです。

本システムは、䞻に以䞋の2぀の局面で掻甚されたす。

1. 機胜開発時の受け入れテスト

機胜開発やバグ修正埌の動䜜確認においお、Jupyter Notebookのむンタラクティブな特性を最倧限に掻甚したす。開発者やテスタヌは以䞋のような利点を享受できたす

  • ステップバむステップ実行: セルごずに実行しお問題箇所を即座に特定
  • 芖芚的な確認: 各ステップでスクリヌンショットを確認しながら進行
  • 倖郚システムずの連携: Googleログむンなど、倖郚のシステムに察する操䜜を含むテストも実珟可胜

この堎面での利甚方法は 結合詊隓環境のアヌキテクチャ セクション以降で詳しく説明したす。

2. CI/CDによる自動テスト

GitHub ActionsなどのCI/CDパむプラむンに組み蟌み、papermillによるコマンドラむン実行を掻甚した継続的な品質保蚌を実珟したす

  • 自動実行: pushやPull Request時に自動的にテストを実行
  • バッチ凊理: papermillを䜿甚しおNotebookを非察話的に実行
  • 䞊列実行: matrix戊略により耇数のテストグルヌプを䞊列で実行
  • 結果の可芖化: 実行結果をArtifactsずしお保存し、動画やNotebookで確認可胜

この堎面での利甚方法は CI/CD (GitHub Actions) セクションで詳しく説明したす。

なお、むンタラクティブな入力を必芁ずするNotebookの䞀郚はCI環境では実行できない堎合がありたすが、そのような堎合は以䞋の察策を取りたす

  • パラメヌタ化により倖郚から倀を泚入
  • 条件分岐によるスキップ凊理の実装
  • CI専甚の代替凊理の甚意䟋FakeCASを䜿甚したモック認蚌

品質確保ぞの貢献

すべおの受け入れテストをそのたたCI/CDに組み蟌むこずは困難な堎合もありたすが、本システムにより倚くの詊隓を継続的テストに組み蟌むこずが可胜になりたす。これにより

  • 回垰テストの自動化: 既存機胜が新しい倉曎によっお壊れおいないこずを継続的に確認
  • 早期問題発芋: 問題を開発サむクルの早い段階で発芋し、修正コストを削枛
  • 開発効率の向䞊: 手動テストの工数を削枛し、より創造的な䜜業に集䞭

このように、受け入れテストずCI/CDの䞡面から品質確保に貢献し、GRDMコヌドベヌスの安定性ず信頌性の向䞊に寄䞎したす。

CI/CD (GitHub Actions)

このリポゞトリではGitHub Actionsを䜿甚しおE2Eテストを自動実行しおいたす。テストはpushやpull request時に自動的に実行され、GRDMコヌドベヌスの動䜜を継続的に怜蚌したす。 珟圚はこのリポゞトリでの実行のみですが、RDM-osf.ioコヌドベヌス偎でもE2Eテストを実行するこずで、継続的な回垰テストの実珟を目指しおいたす。

マむグレヌションテスト

マむグレヌションテストは、GRDMのバヌゞョンアップ前埌でデヌタず機胜が正しく動䜜するこずを確認するテストです。

  1. マむグレヌション前: 旧バヌゞョンでテストデヌタを䜜成䟋取りたずめ-Migration前-20250906.ipynb
  2. マむグレヌション実行: システムを新バヌゞョンぞアップグレヌド
  3. マむグレヌション埌: 新バヌゞョンでデヌタの敎合性ず機胜を確認䟋取りたずめ-Migration埌-20250906.ipynb

GitHub Actionsのワヌクフロヌでは、matrix蚭定でmigration_fromを指定するこずで実行されたす。マむグレヌションテスト甚のNotebookはmigrations/ディレクトリに配眮されおいたす。

マむグレヌション前埌で確認したい凊理を远加する堎合は、migrations/ディレクトリ内の察応する取りたずめNotebookを線集し、必芁に応じお新しいテスト手順Notebookを䜜成しおください。

異なるバヌゞョンからのマむグレヌションテストを远加する堎合は、.github/workflows/e2e-test.ymlのmatrix蚭定に新しい゚ントリを远加し、察応する日付の取りたずめNotebook取りたずめ-Migration前-YYYYMMDD.ipynbず取りたずめ-Migration埌-YYYYMMDD.ipynbをmigrations/ディレクトリに䜜成しおください。

テスト結果の確認

テスト実行埌、結果はGitHub ActionsのArtifactsから確認できたす

  1. test-results-failed - 倱敗したテストのNotebookのみを含むアヌカむブ

    • ゚ラヌが発生したNotebook.ipynbファむル
    • 関連するサブNotebookや実行結果
    • 問題の調査に必芁な最小限のファむルセット
  2. test-results-full - すべおのテスト結果を含む完党なアヌカむブ

    • 実行されたすべおのNotebook.ipynbファむル
    • スクリヌンキャプチャ動画.webm圢匏
    • 各テストステップの実行結果ず蚌跡

動画による確認

各テストの実行過皋は動画.webm圢匏ずしお蚘録されおいたす

  • 動画はブラりザで盎接再生可胜
  • テストの各ステップがどのように実行されたかを芖芚的に確認できる
  • ゚ラヌ発生時の画面状態を正確に把握できる

Notebookでの詳现確認

テスト結果のNotebookファむルには以䞋の情報が含たれおいたす

  • 各セルの実行結果
  • ゚ラヌメッセヌゞずスタックトレヌス
  • 実行時のパラメヌタ
  • スクリヌンショット゚ラヌ発生時

これらのNotebookはJupyter環境で開くこずで、゚ラヌの詳现を確認し、必芁に応じお再実行やデバッグが可胜です。

結合詊隓環境のアヌキテクチャ

GRDM結合詊隓の機械化には、以䞋の゜フトりェアを利甚したす。

OperationHubは、むンフラ運甚向けにカスタマむズされたJupyterHubであり、結合詊隓甚に䜜成されるJupyter Notebookの開発・実行環境を提䟛したす。 papermillは、Jupyter Notebookをプログラムから機械的に実行するためのラむブラリです。実行時にパラメヌタを䞎えるこずでJupyter Notebookの動䜜をカスタマむズしお実行するこずが可胜です。papermillのパラメヌタ機胜を甚いるこずで、結合詊隓のタヌゲットに関する接続情報や、ストレヌゞに関する認蚌情報などを倖郚から䞎えるこずができたす。 Jenkinsは、OperationHubにお䜜成されたJupyter Notebookを定期的に実行するためのCI/CDツヌルです。

本システムでは、テスト実斜者は以䞋のようにしお結合詊隓を行うこずができたす。

  1. 詊隓項目の開発・保守: 詊隓項目を開発・保守する際は、OperationHub䞊で結合詊隓甚Jupyter Notebookを䜜成する。Jupyter NotebookのWeb UIから詊隓甚のスクリプト(ブラりザ䞊に衚瀺されおいる芁玠を取埗しお衚瀺や動䜜を怜蚌する)を䜜成したす。Jupyter NotebookのUIを通じお詊行錯誀的にスクリプト開発を行うこずができたす。実行結果に関しお、応答性胜を収集したり、蚌跡を蚘録したりずいった凊理を蚘述するこずも可胜です。
  2. 詊隓項目の実行: 詊隓項目を実行する゚ンゞニアは、詊隓実斜Jupyter Notebookを実行する。papermillは、指定されたパラメヌタずずもにJupyter Notebookを実行したす。

詊隓の実斜、成功・倱敗の刀定ず、蚌跡の収集はJupyter Notebookが行いたす。Jupyter Notebook環境にはpandas, numpy等のデヌタ凊理ラむブラリがむンストヌルされおいるため、テスト結果の分析や可芖化も容易に行えたす。

詊隓単䜍の蚭蚈

結合詊隓の機械化にあたり、詊隓単䜍の蚭蚈を行いたした。GRDMは䞻に研究者に察しお研究デヌタを管理するためのストレヌゞサヌビスを提䟛するこずが䞻県であり、詊隓項目はストレヌゞに察するデヌタの登録や読み出しずいった操䜜が䞭心ずなりたす。たた、そのデヌタが栌玍されたプロゞェクトに察しお誰がアクセスできるかずいったアクセス範囲を制埡する機胜も重芁な詊隓項目ずなりたす。

したがっお、䞻芁なテストの芳点を以䞋のように分類したした。

  • アクセス䞻䜓 ... 誰がデヌタにアクセスするかを芏定したす。プロゞェクトのオヌナヌや、読み蟌みのみのメンバヌ、読み曞き可胜なメンバヌず蚀った皮類を芏定したす。
  • アクセス方法 ... ストレヌゞサヌビスの皮別やその認蚌情報に加え、API経由、Web UI経由ずいったアクセス方法を芏定したす。
  • 操䜜 ... ストレヌゞに察するデヌタの登録、読み出し、削陀ずいった、詊隓察象の機胜を芏定したす。

詊隓は操䜜に察しお定矩するものずし、アクセス䞻䜓ずアクセス方法はパラメヌタずしお䞎えられるようにするこずを基本方針ずしたす。䟋えば、「オヌナヌによるファむル操䜜」や「非オヌナヌによるファむル操䜜」ずいった圢で個別に詊隓項目を分けるこずはせず、「ファむル操䜜(アクセス䞻䜓, チェック項目)」ずいった圢で詊隓項目をパラメヌタ化しお考えるこずでその皮類を最小限に抑え、保守性を高めるためです。

パラメヌタ化の䟋ずしおは以䞋のようになりたす。

  • ファむルアップロヌド・ダりンロヌドの詊隓(ストレヌゞ皮別, アクセス䞻䜓(オヌナヌ/曞き蟌み暩あり非オヌナヌ))

操䜜は互いに䟝存する堎合がありたす。䟋えば、「ファむルアップロヌド・ダりンロヌドの詊隓(暙準ストレヌゞ)」は独立しお実行するこずができたすが、Amazon S3等の倖郚ストレヌゞに察する詊隓を行う堎合は、事前にストレヌゞの認蚌情報を登録しおおく必芁がありたす。しかしながら、認蚌情報の蚭定方法はストレヌゞサヌビスの皮類ごずに異なるため、これは別々の操䜜ずしお扱うこずずしたす。䟋えば、Amazon S3に察する詊隓の構成は、以䞋の2぀の操䜜から構成されたす。

  • Amazon S3の認蚌情報登録・削陀詊隓
    • ファむルアップロヌド・ダりンロヌド詊隓(Amazon S3)

ファむルアップロヌド・ダりンロヌド詊隓は、Amazon S3の認蚌情報が登録された時点で実行する必芁がありたす。たた、ファむルアップロヌド・ダりンロヌド詊隓実斜埌は、Amazon S3の認蚌情報を削陀する詊隓も実行する必芁がありたす。そのため、Amazon S3の認蚌情報特録・削陀詊隓から、ファむルアップロヌド・ダりンロヌド詊隓を呌び出すように蚭蚈したす。どの詊隓を呌び出すかは、papermillのパラメヌタ指定機胜を甚いお、呌び出すJupyter Notebook名を指定するこずで実珟したす。これにより、詊隓の実行順序や䟝存関係を柔軟に管理するこずができたす。

互いに䟝存しない詊隓項目は独立しお、䞊列に実行できるように蚭蚈したす。䞊列実行可胜にする配慮ずしおは、以䞋のようなものがありたす。

  • 詊隓で䜿甚するリ゜ヌス (プロゞェクト、ストレヌゞ等) を詊隓ごずに払い出す
  • 詊隓終了埌には、払い出したリ゜ヌスを解攟する

プロゞェクトやストレヌゞを詊隓ごずに共有しおしたうず、詊隓の実斜順序により 詊隓結果が倉わっおしたう可胜性がありたす。 これらの配慮により、詊隓環境の競合を避け、詊隓の独立性を保぀こずができたす。

Jupyter Notebookの管理

結合詊隓はJupyter Notebookの自動実行により実珟したす。Jupyter Notebookは倧きく以䞋の2぀のカテゎリに分類されたす。

  1. テスト手順 Jupyter Notebook - 䟋: テスト手順-ストレヌゞ共通.ipynb
  2. 結合詊隓実行・取りたずめ Jupyter Notebook - 䟋: 結合詊隓-実行.ipynb

テスト手順 Jupyter Notebookは、定点監芖時のテスト手順を蚘茉したJupyter Notebookです。Playwright https://playwright.dev/ を甚いたHeadlessブラりザ操䜜を行うためのコヌドが蚘茉されおいたす。 このNotebookは、終了時に動画キャプチャず通信内容を蚘録したharファむル、゚ラヌ終了した堎合は最埌のキャプチャ画像を、所定のディレクトリに保存したす。 結合詊隓実行・取りたずめ Jupyter Notebookは、テスト手順 Jupyter Notebookを実行し、結果を取りたずめるJupyter Notebookです。 このNotebookはテスト手順Notebookを実行し、その結果をサマリずしおたずめ、蚌跡ずしおファむルに保存したす。

新しくJupyter Notebookを远加する際にはファむル名を「テスト手順-」か「取りたずめ-」から始めるこずで、1.ず2.、どちらの皮類であるかわかるようにしおください。結合詊隓-実行.ipynbはこのルヌルの䟋倖です。結合詊隓-実行.ipynbは結果を収集しおサマリにたずめる際に、このファむル名の構造を利甚しおいたす。

テスト手順 Jupyter Notebook

テスト手順 Jupyter Notebookは、以䞋のような構成になっおいたす。

  1. パラメヌタの蚭定
  2. テスト手順の蚘述

パラメヌタの蚭定は、papermillの芏玄に埓い、parametersタグが付䞎されたセルに蚘述したす。 テスト手順-䞀般ナヌザヌログむン〜ファむル操䜜-定点監芖甚.ipynb では、先頭セルに以䞋のように蚘述されおいたす。

rdm_url = 'https://rdm.nii.ac.jp/'
idp_name = 'GakuNin RDM IdP'
idp_username = None
idp_password = None
default_result_path = None
project_name = 'テスト甚プロゞェクト'
close_on_fail = False

これらの倉数は接続先のURL、ログむン情報、結果の保存先、プロゞェクト名、゚ラヌ発生時の挙動を制埡するための倉数です。 䞊蚘に瀺したように、これらの倚くは空ですが、呌び出し元ずなるテスト実行・取りたずめ Jupyter Notebookからpapermillにより倀が䞊曞きされたす。

papermillからではなく、手䜜業でテスト手順 Jupyter Notebookを䜜成する堎合に備えお、蚭定によっおは倀が空の堎合にナヌザヌから入力を求めるようにしおいたす。

if idp_username is None:
    idp_username = input(prompt=f'Username for {idp_name}')
if idp_password is None:
    idp_password = getpass(prompt=f'Password for {idp_username}@{idp_name}')
(len(idp_username), len(idp_password))

䞊蚘のコヌドは、idp_username および idp_password が空の堎合に、ナヌザヌに察しおその内容の入力を求めるコヌドです。 papermillによるコマンドラむン実行時には、このような入力を求めるコヌドは実行するこずができたせん。そのため、papermillからこれらの倉数の倀を指定する必芁がありたす。

テスト手順の蚘述は、PlaywrightのAPIを甚いおブラりザの操䜜を行うコヌドが蚘述されたす。 セル実行時に出力結果にキャプチャ画像を貌り付けたり、゚ラヌ発生時に必芁な情報を取埗するためのナヌティリティスクリプトを甚意しおいたす。 これは scripts/ ディレクトリに栌玍されおいたす。

このナヌティリティスクリプト scripts/playwright.py を䜿う堎合は、以䞋のように初期化を行いたす。

import importlib
import pandas as pd

import scripts.playwright
importlib.reload(scripts.playwright)

from scripts.playwright import *
from scripts import grdm

await init_pw_context(close_on_fail=close_on_fail, last_path=default_result_path)

このコヌドは、Playwrightの初期化を行い、結果の保存先、゚ラヌ発生時の挙動を蚭定したす。 close_on_fail を True にするず、゚ラヌ発生時に関連するリ゜ヌスをすべお砎棄し、動画キャプチャやharファむルの保存を行いたす。 False にするず、画面キャプチャを撮るだけで、リ゜ヌスは維持したす。 Jupyter Notebookを䜜成する堎合は、 close_on_fail を False にしおおくず、その埌の操䜜を継続的に行うこずができたす。 papermillの自動実行時は True にしおおくず、゚ラヌ発生時にリ゜ヌスを解攟し、関連する動画キャプチャやharファむルなどのデヌタを匕き揚げるこずができたす。

default_result_path には、結果の保存先を指定したす。 None の堎合は、 ~/last-screenshots に保存されたす。

テスト手順の蚘述は、以䞋のような圢匏で蚘述したす。

async def _step(page):
    await page.goto(rdm_url)

    # 同意する をクリック
    await page.locator('//button[text() = "同意する"]').click()

    # 同意する が衚瀺されなくなったこずを確認
    await expect(page.locator('//button[text() = "同意する"]')).to_have_count(0, timeout=500)

await run_pw(_step)

run_pw 関数を利甚するこずで、指定された手順を実行するこずができたす。 run_pw はナヌティリティスクリプトが提䟛する関数で、Playwrightのコンテキストを初期化し、指定された手順を実行したす。 完了時にはスクリヌンキャプチャを戻り倀ずしお返すため、画面の様子を確認するこずができたす。

run_pw に䞎える関数 _step は、Playwrightの page オブゞェクトを匕数に取り、その䞭でブラりザの操䜜を行いたす。 この関数の䞭では、倧きく分けお以䞋のような操䜜を行いたす。

  1. ペヌゞでの操䜜
  2. 操䜜埌の状態の確認

ペヌゞでの操䜜は、PlaywrightのAPIを甚いお行いたす。䟋えば、 page.goto で指定されたURLに遷移し、 page.locator で指定された芁玠に察しお click を呌び出し、クリックを実行するこずができたす。 https://playwright.dev/python/docs/pages に蚘茉されおいるAPIを利甚するこずで、ブラりザの操䜜を自動化するこずができたす。

操䜜埌の状態の確認は、 expect 関数を甚いお行いたす。 expect 関数は、指定された条件が満たされるたで埅機し、条件が満たされた堎合に次の凊理を行いたす。 https://playwright.dev/python/docs/test-assertions に蚘茉されおいるAPIを利甚するこずで、ペヌゞ䞊の芁玠の状態を確認するこずができたす。 timeout で指定された時間内に条件が満たされない堎合は、゚ラヌずなりたす。

テスト手順の蚘述郚分の構成ず詳现

テスト手順の蚘述郚分は兞型的には以䞋のようにセルが䞊びたす。

  1. レベル1の芋出しを1行目ずするMarkdownセル
  2. レベル2の芋出しを2行目ずするMarkdownセル
  3. _step関数を定矩し、ナヌティリティrun_pwによっおそれを実行するセル
  4. (2.ず3.を亀互に繰り返す)
  5. 終了凊理

実際には、1.から4.をひずかたたりずしお、これを耇数個䞊べおも構いたせん。 このひずかたたりをStepSequence、1.をStepSequence Headerず呌びたす。同様 に、2.ず3.のひずかたたりをStep、2.をStep Headerず呌びたす。3.には耇数の セルを配眮しおも構いたせん。䟋えば、䞊で述べたinit_pw_contextによる初 期化セルなどはその実䟋です。

StepSequence Headerの2行目以降に以䞋の内容を含めるこずが掚奚されたす。

- サブシステム名: {}

- ペヌゞ/アドオン: {}

- 機胜分類: {}

- シナリオ名: {}

- 甚意するテストデヌタ: {}

ただし、{}はプレヌスホルダで、そのStepSequenceに沿った内容を蚘述しおく ださい。芋出しの内容も含め、これらはテスト結果をたずめたxlsxファむルに 反映されるので、適切に蚘述しおおくこず結果を理解しやすくなるず期埅された す。

Step Headerの芋出しの内容、そしお2行目以降の内容も、やはりxlsxファむルに 反映されるので、必芁に応じお2行目以降にそのStepの説明を蚘述しおおくず理 解を助けたす。

StepSequence Header、Step Headerどちらに぀いおも、1行目の芋出し行は#に よる衚珟を利甚しお蚘述しおください。

1぀のStepで2回以䞊run_pwを呌び出すこずは掚奚されたせん。圢匏的には蚱容 されたすが、run_pwがスクリヌンショットのうち、そのStepで最埌に生成され たものしか結果ディレクトリに保存されたせん。

芁玠の特定

操䜜察象ずしお芁玠を特定する堎合は、page.locator() を利甚したす。page.locator() は、CSSセレクタやXPathを甚いお芁玠を特定するこずができたす。芁玠を特定するためのセレクタは、以䞋のような蚘述を行うこずを掚奚したす。

  • id属性を指定する ... 芁玠に指定された id属性は、原則ずしお䞀意であるため、GUIの倉曎に匷い蚘述をするこずができたす。
  • data-test属性を指定する ... GRDMで䜜成されるGUIの䞀郚には、芁玠に data-test 属性を付䞎するこずで、テストコヌドから芁玠を特定するための属性であるこずが明瀺されおいるものがありたす。
  • テキストを指定する ... ボタンに衚瀺されたテキストを指定するこずができたす。この方法の堎合、倚蚀語察応が必芁になった堎合に修正箇所が倚くなる可胜性がありたす。
  • 耇数の芁玠の組み合わせで指定する ... 察象の芁玠に䞊蚘の属性がない堎合、耇数の芁玠を組み合わせお特定するこずができたす。䟋えば、フォルダアむコンに隣接する特定のテキストを指定する、ずいった方法が考えられたす。

XPathやCSSセレクタの䟋に぀いおは、Jupyter Notebookを参考にしおください。 既存のGUIの倉曎があった堎合に、これらの蚘述の修正が必芁になる堎合がありたす。芁玠が芋぀からないずいった゚ラヌが発生した堎合は、盎前スクリヌンショットを参照し、画面を特定した䞊で、ブラりザの 開発者ツヌルを甚いお芁玠を特定し、セレクタを修正する必芁がありたす。

なお、ブラりザの開発者ツヌルを甚いお確認するこずができたすが、 //*[@id="tb-tbody"]/div/div/div[11]/div[1]/span[2]/span のように、芁玠や階局や順序がXPath内郚に含たれおしたうため、GUIの倉曎に远埓しお修正する必芁が生じるため、掚奚されたせん。

ナヌティリティ関数

GRDMには、䞀般的なGUI操䜜を行うためのナヌティリティ関数矀が甚意されおいたす。 scripts/grdm.py に定矩されおいたす。

  • expect_idp_login ... IdPぞのログむンを実斜可胜な状態ずなるたで埅ちたす。ID/PWの入力フォヌムが衚瀺されるたで埅機したす。
  • login_idp ... IdPにログむンする。ID/PWを入力しおログむンしたす。
  • ensure_project_exists ... 指定された名前のプロゞェクトが存圚しない堎合、プロゞェクトを䜜成したす。
  • delete_project ... 指定されたプロゞェクトを削陀したす。
  • get_select_storage_title_locator, get_select_storage_title_xpath ... 「NII Storage」等、ストレヌゞ名を瀺す芁玠を特定するための関数です。
  • get_select_expanded_storage_title_locator, get_select_expanded_storage_title_xpath ... 展開された状態のストレヌゞ名を瀺す芁玠を特定するための関数です。ストレヌゞの内容がロヌドされるたで埅機する堎合に利甚したす。
  • get_select_folder_title_locator, get_select_folder_title_xpath, get_select_folder_toggle_locator, get_select_folder_toggle_xpath ... フォルダ名を瀺す芁玠を特定するための関数です。title は、フォルダ名のテキスト、toggle は、フォルダの展開・折りたたみアむコンを瀺す芁玠を特定するための関数です。
  • get_select_file_title_locator, get_select_file_title_xpath ... ファむル名を瀺す芁玠を特定するための関数です。
  • get_select_file_extension_locator, get_select_file_extension_xpath ... ファむルの皮別を瀺すアむコン芁玠を瀺す芁玠を特定するための関数です。
  • wait_for_uploaded ... ファむルがアップロヌドされるたで埅機するための関数です。ファむルのプログレスバヌが衚瀺されおいる間埅機したす。
  • upload_file, drop_file ... ファむルをアップロヌドするための関数です。upload_fileはストレヌゞやフォルダ遞択時に珟れる「アップロヌド」ボタンを䜿い、drop_fileはファむルを画面にドロップしおアップロヌドしたす。drop_fileはファむルをJavaScriptに倉換しお実行するため、数MB皋床たでのファむルにのみ利甚可胜です。

結合詊隓実行・取りたずめ Jupyter Notebook

結合詊隓実行・取りたずめ Jupyter Notebookは、以䞋のような構成になっおいたす。

  1. パラメヌタの蚭定
  2. テスト手順 Jupyter Notebookの実行
  3. 結果の取りたずめ

最初の パラメヌタの蚭定 では、察象ずなる結合詊隓の実行に必芁な倉数を蚭定したす。この情報は、実行されるNotebookに枡される匕数ずしお䜿甚されたす。䟋えば、システムのURLやナヌザヌ認蚌情報などが含たれたす。 次に、 テスト手順 Jupyter Notebookの実行 では、papermillを䜿甚しお、指定したテスト手順 Jupyter Notebookをパラメヌタ付きで実行したす。この段階で、テスト甚のNotebookが凊理され、各ステップの結果が生成されたす。テストの構成により、実行されたNotebookがさらに別の Notebookを呌び出すこずもありたす。 結果の取りたずめでは、テストの実行埌、埗られた結果を収集し、結果を取りたずめたす。この取りたずめには、倱敗したものがある堎合はそのサマリ、性胜情報の芖芚化が含たれたす。

党おのテスト手順Jupyter Notebookの実行結果には、動画でのスクリヌンキャプチャを添付するこずで、状況の確認の助けずしたす。動画のシヌンがテストのどの手順に察応しおいるかの参考にできるよう、実行䞭のセルの芋出し文字列が字幕ずしお挿入されたす。

セキュリティず機密情報の管理

このリポゞトリをGitで管理・公開する際は、機密情報の流出を防ぐためにpre-commit hookを蚭定しおください。

セットアップ手順

  1. 必芁なツヌルのむンストヌル

    # macOSの堎合
    brew install gitleaks
    
    # pre-commitをむンストヌル
    pip install pre-commit
  2. pre-commit hookの有効化

    # リポゞトリのルヌトディレクトリで実行
    pre-commit install
  3. 動䜜確認

    # 党ファむルをチェック
    pre-commit run --all-files

怜出される機密情報

pre-commit hookは以䞋の情報を自動的に怜出し、コミットをブロックしたす

  • AWSアクセスキヌ、シヌクレットキヌ
  • APIトヌクン、認蚌トヌクン
  • プラむベヌトキヌ
  • その他の機密情報パタヌン

たた、Notebookファむルのコミット時には自動的に䞍芁なメタデヌタlc_server_signature.historyが削陀されたす。

Notebook出力のクリヌニング

Jupyter Notebookの出力セルには実行時の情報が蚘録されるこずがありたす。必芁に応じおセルの出力を消去しおください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages