[T-DASH] テスト自動化でクッキーを制御する

# Outline

テスト自動化T-DASHでクライアント側でcookieを制御したい時がある。
そのときの手順に関して解説する

https://service.valtes.co.jp/t-dash/

# 技術的情報

robot frameworkにcookieを制御する命令がいくつかある
今回、３つのkeywordsを用いる

| keywords | detail | 
|:-----------|:------------|
| Add Cookie       |cookieを追加する        |
| Delete Cookie       |cookieを削除する        |
| Get Cookie       |cookieを取得する        |


https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Add%20Cookie

# テスト対象

guru99を用いた。
任意のuserid , passwordを取得できる。
ログイン後、クッキーを取得、削除、追加することで、ログイン状態が解除されることを検証する

1. 取得した、一時アカウントでログインをする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/44088f55-9854-3100-8c20-413176c9b10d.png)

2. ログインの検証とクッキーの確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/620d965c-2e24-8724-32cf-e1759309929c.png)

3. クッキーを削除・変更し、Manager IDが空っぽ（ログアウトされた状態）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/0164d588-9b0d-8a6d-0cce-7bc80b9c5bad.png)



https://demo.guru99.com/V4/index.php

# T-DASH 設定

## カスタム動作

以下設定内容をCookie.yamlに保存する

```
ACT-CAT-CUSTOM-cf6328a1-ed05-40b3-9173-1133c9915975:
  action_category_name: Cookie
  icon: ''
  color: '#a1369a'
  custom_data:
    file_name: Cookie
    pip_list: []
    library_list:
    - SeleniumLibrary
    - DateTime
  actions:
    ACT-CUSTOM-14684897-8216-4938-9626-8798e5626511:
      action_name: Cookieを追加する
      action_type: operation
      action_format: 名前「設定値1」値「設定値2」のCookieを追加する
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - ${now} =
        - get current date
      - - '${cookie_expiry} = '
        - Add Time To Date
        - ${now}
        - 30 days
      - - Add Cookie
        - ${value1}
        - ${value2}
        - secure=True
        - expiry=${cookie_expiry}
    ACT-CUSTOM-ecca49f1-fcb7-4c3a-bf18-f4f36b641cd6:
      action_name: Cookieを削除する
      action_type: operation
      action_format: 名前「設定値1」のCookieを削除する
      action_note: ''
      action_args:
      - value1
      action_def:
      - - Delete Cookie
        - ${value1}
    ACT-CUSTOM-687e13c7-6c95-4586-a24b-a19820ea1e72:
      action_name: Cookieを取得する
      action_type: operation
      action_format: 名前「設定値1」のCookieを取得して、変数share_valueに格納する
      action_note: ''
      action_args:
      - value1
      action_def:
      - - ${value} =
        - Get Cookie
        - ${value1}
      - - Log
        - cookie ${value1} value is ${value}
      - - Set Suite Variable
        - ${share_value}
        - ${value.value}
```

次に、作成されたChromeOpti.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートする


### Cookie 追加
cookieの有効期限30日で設定しています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/8a012fc4-25b6-735d-e1b3-d1fb1068bdd4.png)

### Cookie 削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/3428c838-f897-2902-560b-71e462c7f7a4.png)

### Cookie 取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/fa6fcd93-6686-f3be-d39e-148a3bac8fb7.png)

## スクリプト

cookieの操作３つのカスタム動作を利用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/65917856-2807-ec27-b165-1170ab759b69.png)


実行ログを見ると、cookieの情報を確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/cd9f453e-ce80-3be4-8857-06fa39d9aacb.png)