0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PlaywrightのextraHTTPHeaders機能について

Posted at

extraHTTPHeaders機能とは

PlaywrghtにはextraHTTPHeaders機能というものがあります。これは、test内でAPIリクエストを行う際に、自動的に認証ヘッダーを添えてくれるものです。

例えば、

  const deleteArticleResponse = await request.delete(`https://conduit-api.bondaracademy.com/api/articles/${forDaleteArticleSlag}`, {
    headers: {
      authorization: `Token ${accessToken}`,
    },
  });

としていたものが、

  const deleteArticleResponse = await request.delete(`https://conduit-api.bondaracademy.com/api/articles/${forDaleteArticleSlag}`);

だけで済むようになります。

導入手順

1 .auth/user.jsonの作成

アクセストークンを保存するための.auth/user.jsonを作成します。

以下のようなものです。

{
  "cookies": [],
  "origins": [
    {
      "origin": "https://conduit.bondaracademy.com",
      "localStorage": [
        {
          "name": "jwtToken",
          "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxNDE4Mn0sImlhdCI6MTczNDIwOTU1OCwiZXhwIjoxNzM5MzkzNTU4fQ.kJ_lo1xqpLI7fTVWscziBs2Z5ChbdJe1yjUMNfC04HM"
        }
      ]
    }
  ]
}

2 アクセストークンの取得

auth.spec.tsでログイン処理を行い、アクセストークンを取得します。

ログイン処理はUI操作によるものでも、API操作によるものでも、どちらでも構いません。

今回は、test処理時間の短縮の観点も考慮し、API操作によるものを行なっています。

import { test as setup } from '@playwright/test';
import user from '../.auth/user.json';
import fs from 'fs';

const authFile = '.auth/user.json';

setup('authentication', async ({ page, request }) => {
  const response = await request.post('https://conduit-api.bondaracademy.com/api/users/login', {
    data: {
      user: {
        email: 'test@test.com',
        password: 'test',
      },
    },
  });
  const responseBody = await response.json();
  const accessToken = responseBody.user.token;

  user.origins[0].localStorage[0].value = accessToken;
  fs.writeFileSync(authFile, JSON.stringify(user));

  process.env['ACCESS_TOKEN'] = accessToken;
});

3 process.env.ACCESS_TOKENの設定

auth.spec.tsで以下のようにprocess.env['ACCESS_TOKEN']を設定します。

  process.env['ACCESS_TOKEN'] = accessToken;

4 Playwright.config.tsを設定する。

以下のように、

extraHTTPHeaders: {
  Authorization: `Token ${process.env.ACCESS_TOKEN}`,
},

を追記します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?