رياكت
React يجعل إنشاء واجهات المستخدم التفاعلية أمرًا سهلاً. صمم عروضًا بسيطة لكل حالة في تطبيقك، وسيقوم React بتحديث وعرض المكونات المناسبة بكفاءة عندما تتغير بياناتك. يمكنك اختبار مكونات React مباشرة في متصفح حقيقي باستخدام WebdriverIO ومنفذ المتصفح الخاص به.
الإعداد
لإعداد WebdriverIO ضمن مشروع React الخاص بك، اتبع التعليمات في وثائق اختبار المكونات لدينا. تأكد من اختيار react
كإعداد مسبق ضمن خيارات المشغل الخاص بك، على سبيل المثال:
// wdio.conf.js
export const config = {
// ...
runner: ['browser', {
preset: 'react'
}],
// ...
}
إذا كنت تستخدم بالفعل Vite كخادم تطوير، يمكنك أيضًا إعادة استخدام التكوين الخاص بك في vite.config.ts
ضمن تكوين WebdriverIO الخاص بك. لمزيد من المعلومات، انظر viteConfig
في خيارات المشغل.
يتطلب الإعداد المسبق لـ React تثبيت @vitejs/plugin-react
. كما نوصي باستخدام Testing Library لعرض المكون في صفحة الاختبار. لذلك، ستحتاج إلى تثبيت التبعيات الإضافية التالية:
- npm
- Yarn
- pnpm
npm install --save-dev @testing-library/react @vitejs/plugin-react
yarn add --dev @testing-library/react @vitejs/plugin-react
pnpm add --save-dev @testing-library/react @vitejs/plugin-react
يمكنك بعد ذلك بدء الاختبارات عن طريق تشغيل:
npx wdio run ./wdio.conf.js
كتابة الاختبارات
بفرض أن لديك مكون React التالي:
import React, { useState } from 'react'
function App() {
const [theme, setTheme] = useState('light')
const toggleTheme = () => {
const nextTheme = theme === 'light' ? 'dark' : 'light'
setTheme(nextTheme)
}
return <button onClick={toggleTheme}>
Current theme: {theme}
</button>
}
export default App
في اختبارك، استخدم طريقة render
من @testing-library/react
لإرفاق المكون بصفحة الاختبار. للتفاعل مع المكون، نوصي باستخدام أوامر WebdriverIO لأنها تتصرف بشكل أقرب إلى تفاعلات المستخدم الفعلي، على سبيل المثال:
import { expect } from '@wdio/globals'
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import * as matchers from '@testing-library/jest-dom/matchers'
expect.extend(matchers)
import App from './components/Component.jsx'
describe('React Component Testing', () => {
it('Test theme button toggle', async () => {
render(<App />)
const buttonEl = screen.getByText(/Current theme/i)
await $(buttonEl).click()
expect(buttonEl).toContainHTML('dark')
})
})
يمكنك العثور على مثا ل كامل لمجموعة اختبار مكونات WebdriverIO لـ React في مستودع الأمثلة الخاص بنا.