Skip to content
This repository has been archived by the owner on Dec 28, 2024. It is now read-only.

フロントエンドのCIを整える #28

Open
2 of 3 tasks
Tatsumi0000 opened this issue Oct 17, 2023 · 5 comments
Open
2 of 3 tasks

フロントエンドのCIを整える #28

Tatsumi0000 opened this issue Oct 17, 2023 · 5 comments
Assignees
Labels
CI CIの設定 javascript Pull requests that update Javascript code Vue(TypeScript/JavaScript) Vueでの開発

Comments

@Tatsumi0000
Copy link
Owner

Tatsumi0000 commented Oct 17, 2023

💪 やること

  • フロントエンド(Vue3 + Vitest)のテストが落ち続けています。
    • Vuetify周りで落ちてるっぽいので良い感じにします。
  • そしてテストを書く

✅ 解決したいこと

  • Vueのテストに失敗するのを解決する

🥅 このissueのゴール

  • Vueのテストが動く
  • CIも動く
  • 各コンポーネントのテストも書く

📝 関連

@Tatsumi0000 Tatsumi0000 added Vue(TypeScript/JavaScript) Vueでの開発 CI CIの設定 javascript Pull requests that update Javascript code labels Oct 17, 2023
@Tatsumi0000 Tatsumi0000 self-assigned this Oct 17, 2023
@Tatsumi0000 Tatsumi0000 moved this from 🆕 New to 📋 Backlog in StarryKids project Oct 17, 2023
@Tatsumi0000
Copy link
Owner Author

VuetifyとVitestでのテストについてVuetifyに公式ドキュメントがあるのでこれをならっていきます。

@Tatsumi0000
Copy link
Owner Author

Vuetifyの方はvite.config.tsにやってたけど、Vitest公式を見たら vitest.config.tsに設定を追加していたのでこっちの通りに新しくファイルを作ります。
あとVuetifyの方はimport { defineConfig } from "vitest";になってたけど、Vitest公式はimport { defineConfig } from "vitest/config";でした。configなしだとエラーになってたので、configありを使います。

エラーのログ

vite.config.ts
No overload matches this call. The last overload gave the following error. Argument of type '{ plugins: (Plugin_2 | Plugin_2[])[]; server: { host: true; }; resolve: { alias: { "@": string; }; }; test: { globals: boolean; environment: string; deps: { inline: string[]; }; }; }' is not assignable to parameter of type 'UserConfigExport'. Object literal may only specify known properties, and 'test' does not exist in type 'UserConfigExport'. 17:3:1 typescript2769
No overload matches this call. The last overload gave the following error. 17:3:1 ts2769

import { defineConfig } from "vitest/config";

export default defineConfig({
  test: {
    globals: true,
    environment: "jsdom",
    deps: {
      inline: ["vuetify"],
    },
  },
});

ref.

@Tatsumi0000
Copy link
Owner Author

あとついでにjsdomも入れました。

@Tatsumi0000
Copy link
Owner Author

Tatsumi0000 commented Oct 17, 2023

vitestには既存の設定(vite.config.ts)とかを取り込みつつオリジナルの設定を作れるような機能があるっぽかったです。

export default mergeConfig(
  viteConfig,
  defineConfig({
    test: {
      globals: true,
      environment: "jsdom",
      deps: {
        inline: ["vuetify"],
      },
    },
  }),
);

これでテストを実行したらパスしました。ただ、Waringがでていたので少し修正しました。

Waringの内容

"deps.inline" is deprecated. If you rely on vite-node directly, use "server.deps.inlin
e" instead. Otherwise, consider using "deps.optimizer.web.include"

実際に置き換えたコード。

import { defineConfig, mergeConfig } from "vitest/config";
import viteConfig from "./vite.config";

export default mergeConfig(
  viteConfig,
  defineConfig({
    test: {
      globals: true,
      environment: "jsdom",
      server: {
        deps: {
          inline: ["vuetify"],
        },
      },
    },
  }),
);

vite-node

[Vitest] でも使用されている [Vite] のビルドスタックを使って [Node.js] をアプリを直接実行する仕組み。

みたいです。テスト実行時は実際にブラウザでなにかしているわけではなく、Node.jsで何かしているはず…という期待を込めて、server.deps.inlineで設定をしています。これに変更してもテストをパスしているので間違ってはなさそう。

ref.

@Tatsumi0000
Copy link
Owner Author

CIは動くようになった

@Tatsumi0000 Tatsumi0000 moved this from 🏗 In progress to ✅ Done in StarryKids project Nov 14, 2023
@Tatsumi0000 Tatsumi0000 moved this from ✅ Done to 🏗 In progress in StarryKids project Nov 14, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
CI CIの設定 javascript Pull requests that update Javascript code Vue(TypeScript/JavaScript) Vueでの開発
Projects
Status: 🏗 In progress
Development

No branches or pull requests

1 participant