Rumah >hujung hadapan web >tutorial js >Tunjukkan Metadata dalam Laporan HTML Penulis Drama: Panduan Lengkap

Tunjukkan Metadata dalam Laporan HTML Penulis Drama: Panduan Lengkap

Barbara Streisand
Barbara Streisandasal
2024-12-30 21:13:091007semak imbas

Penulis drama ialah rangka kerja ujian yang berkuasa, tetapi laporan HTMLnya boleh berasa kosong untuk projek yang rumit. Bukankah bagus untuk memaparkan metadata seperti komit mesej, butiran pengarang atau pautan kepada binaan CI terus dalam pengepala laporan? Begini cara untuk mencapainya dan beberapa pandangan yang lebih mendalam tentang keupayaan Playwright.

Memahami Metadata Penulis Drama

Dokumentasi Playwright menyebut medan metadata untuk konfigurasi:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  metadata: 'acceptance tests',
});

Pada masa penulisan (Penulis Drama v1.49), ia menyatakan:

Metadata yang akan dimasukkan terus ke dalam laporan ujian yang disiri sebagai JSON

Tetapi ada tangkapan: menambah konfigurasi ini tidak akan menunjukkan sebarang metadata dalam laporan. Jika anda menggunakan TypeScript, anda juga akan melihat ralat untuk contoh yang diberikan:

Taip 'rentetan' tidak boleh diberikan untuk menaip 'Metadata'.

Jelas sekali, dokumentasi itu sudah lapuk, tetapi metadata dalam laporan sememangnya boleh dilakukan.

Konfigurasi Metadata Sebenar

Selepas menyelami kod sumber Playwright, saya menemui medan sebenar yang disokong oleh laporan HTML:

export type Metainfo = {
  'revision.id'?: string;
  'revision.author'?: string;
  'revision.email'?: string;
  'revision.subject'?: string;
  'revision.timestamp'?: number | Date;
  'revision.link'?: string;
  'ci.link'?: string;
  'timestamp'?: number;
};

Hanya medan ini boleh dipaparkan. Mari konfigurasikannya dalam playwright.config.ts:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: 'html',
  metadata: {
    'revision.id': 'adcb0c51debdbe96a6a836e2ead9d40a859f6438',
    'revision.author': 'John Smith',
    'revision.email': 'john.smith@gmail.com',
    'revision.subject': 'Acceptance tests',
    'revision.timestamp': Date.now(),
    'revision.link': 'https://github.com/microsoft/playwright/pull/12734',
    'ci.link': 'https://github.com/microsoft/playwright/actions/workflows/tests_primary.yml',
    'timestamp': Date.now(),
  },
});

Selepas menjalankan ujian, pengepala laporan HTML memaparkan metadata ini dengan cantik.

Show Metadata in Playwright HTML Report: A Complete Guide

Mengautomasikan Populasi Metadata

Mengisi medan metadata secara manual tidak praktikal, terutamanya dalam persekitaran dinamik seperti saluran paip CI/CD. Mengautomasikan proses ini memastikan metadata yang tepat dan konsisten tanpa usaha manual.

Pakej Pihak Ketiga

Untuk mengautomasikan proses, anda boleh menggunakan mana-mana pakej pihak ketiga yang mengekstrak maklumat komit Git. Ini adalah pendekatan yang mudah, mari kita teruskan ke pilihan kedua yang lebih menarik.

Memanfaatkan Sistem Pemalam Tersembunyi Penulis Drama

Salah satu penemuan paling menarik tentang Playwright ialah sistem pemalam tersembunyinya. Walaupun tidak didokumenkan secara rasmi, ia menyediakan cara untuk melanjutkan keupayaan Playwright melalui pemalam tersuai.

Saya mendapat cerapan ini sambil melihat sebagai ujian Penulis Drama itu sendiri. Penulis drama menyokong medan konfigurasi tersembunyi "@playwright/test", di mana anda boleh menentukan pemalam.

Berikut ialah contoh mendayakan pemalam gitCommitInfo:

import { defineConfig } from '@playwright/test';
import { gitCommitInfo } from 'playwright/lib/plugins';

export default defineConfig({
  reporter: 'html',
  // @ts-expect-error
  '@playwright/test': { 
    plugins: [gitCommitInfo()] 
  },
});

Apakah yang dilakukan oleh Plugin gitCommitInfo?

Pemalam ini mengekstrak butiran komit Git dan mengisi medan metadata dalam laporan HTML, termasuk:

  • Komit cincang
  • Komit mesej
  • Nama pengarang dan e-mel
  • Cap masa

Selain itu, apabila dijalankan dalam persekitaran CI/CD, pemalam boleh mengisi medan secara automatik menggunakan pembolehubah persekitaran standard seperti GITHUB_SHA atau CI_COMMIT_SHA.

Selepas mendayakan pemalam dan menjalankan ujian, saya mendapat laporan berikut dengan metadata diisi secara automatik:

Show Metadata in Playwright HTML Report: A Complete Guide

Pemalam Lain

Saya ingin tahu, adakah terdapat sebarang pemalam tersembunyi lain dalam Playwright?
Dalam direktori pemalam hanya terdapat satu lagi pemalam - webServerPlugin. Ia membolehkan untuk memulakan dan menghentikan pelayan web terbina dalam semasa menjalankan ujian. Malah, apabila anda menentukan pilihan config.webServer, pemalam ini digunakan di bawah hud. Jadi sistem Plugin digunakan secara dalaman dalam Playwright, walaupun tidak didokumenkan untuk kegunaan awam.

Sistem pemalam telah diperkenalkan dalam versi Playwright yang lebih awal, tetapi telah disembunyikan pada satu ketika. Malangnya, tiada rancangan untuk mendedahkannya setakat ini.

Menggunakan Fungsi Tersuai untuk Metadata

Jika anda lebih suka autoisi metadata tanpa bergantung pada pemalam, anda boleh melakukannya dengan fungsi tersuai. Saya telah menyesuaikan fungsi gitStatusFromCLI() daripada pemalam gitCommitInfo, menjadikannya boleh digunakan secara bebas:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  metadata: 'acceptance tests',
});

Penggunaan fungsi untuk mengisi metadata dalam konfigurasi Playwright:

export type Metainfo = {
  'revision.id'?: string;
  'revision.author'?: string;
  'revision.email'?: string;
  'revision.subject'?: string;
  'revision.timestamp'?: number | Date;
  'revision.link'?: string;
  'ci.link'?: string;
  'timestamp'?: number;
};

Selepas menjalankan ujian, saya mendapat laporan HTML yang sama dengan metadata yang diisi:

Show Metadata in Playwright HTML Report: A Complete Guide

Pendekatan ini memberi anda kawalan penuh ke atas automasi metadata tanpa bergantung pada ciri Playwright dalaman.

Mengoptimumkan untuk Ujian Selari

Semuanya kelihatan baik, tetapi terdapat masalah prestasi dengan kod di atas. Boleh teka apa masalahnya?

Penulis drama menjalankan ujian dalam pekerja. Apabila setiap pekerja bermula, ia mengimport konfigurasi Playwright. Jika konfigurasi Playwright melakukan operasi yang berat (seperti mengambil data Git), ia akan memperlahankan pekerja. Lebih-lebih lagi, tidak ada gunanya untuk melaksanakan arahan berkali-kali, kerana ia akan mengembalikan hasil yang sama.

Anda boleh mengoptimumkannya dengan melaksanakan fungsi metadata hanya dalam pekerja utama. Pekerja utama boleh dikesan oleh pembolehubah env TEST_WORKER_INDEX kosong:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: 'html',
  metadata: {
    'revision.id': 'adcb0c51debdbe96a6a836e2ead9d40a859f6438',
    'revision.author': 'John Smith',
    'revision.email': 'john.smith@gmail.com',
    'revision.subject': 'Acceptance tests',
    'revision.timestamp': Date.now(),
    'revision.link': 'https://github.com/microsoft/playwright/pull/12734',
    'ci.link': 'https://github.com/microsoft/playwright/actions/workflows/tests_primary.yml',
    'timestamp': Date.now(),
  },
});

Ini memastikan metadata diisi dengan cekap tanpa menjejaskan prestasi.


Kesimpulan

Menambah metadata pada laporan HTML Playwright boleh dilakukan, walaupun tidak didokumentasikan dengan baik. Anda boleh mengkonfigurasi metadata secara manual, memanfaatkan sistem pemalam tersembunyi atau melaksanakan penyelesaian tersuai.

Pengambilan Utama:

  • Medan metadata terhad kepada kunci tertentu (revision.id, ci.link, dll.).
  • Automasikan metadata dengan pemalam tersembunyi Playwright atau skrip tersuai.
  • Optimumkan untuk ujian selari dengan melaksanakan logik metadata hanya dalam pekerja utama.

Berdasarkan penyelidikan untuk artikel itu, saya telah membuka permintaan tarik kepada repo Penulis Drama, mencadangkan penambahbaikan dokumentasi untuk medan metadata.

Adakah anda cuba menambahkan metadata pada laporan Playwright? Kongsi pengalaman atau cabaran anda dalam ulasan!

Atas ialah kandungan terperinci Tunjukkan Metadata dalam Laporan HTML Penulis Drama: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn