{"meta":{"title":"Erstellen von umfassenden Tests für eine Webseite","intro":"Copilot Chat kann beim Generieren von End-to-End-Tests helfen.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/tutorials","title":"Anleitungen"},{"href":"/de/copilot/tutorials/copilot-cookbook","title":"GitHub Copilot Kochbuch"},{"href":"/de/copilot/tutorials/copilot-cookbook/testing-code","title":"Testen von Code"},{"href":"/de/copilot/tutorials/copilot-cookbook/testing-code/create-end-to-end-tests","title":"Erstellen von umfassenden Tests"}],"documentType":"article"},"body":"# Erstellen von umfassenden Tests für eine Webseite\n\nCopilot Chat kann beim Generieren von End-to-End-Tests helfen.\n\nDas Erstellen von End-to-End-Tests für eine Webseite kann zeitaufwändig und komplex sein, da das HTML dynamisch generiert wird.\nCopilot Chat kann Ihnen helfen, End-to-End-Tests für eine Webseite zu erstellen, indem Sie den erforderlichen Code für die Interaktion mit der Webseite vorschlagen und die erwarteten Ergebnisse überprüfen.\n\n## Beispielszenario\n\nStellen Sie sich eine React-Anwendung vor, die Produktdetails auf einer Webseite anzeigt. Sie müssen End-to-End-Tests erstellen, um sicherzustellen, dass die Produktdetails korrekt angezeigt werden. Sie können Copilot Chat bitten, diese Tests für Sie zu generieren.\n\n```javascript id=product-details\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst ProductDetails = ({ productId = '1' }) => {\n  const [product, setProduct] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n\n  useEffect(() => {\n    const fetchProduct = async () => {\n      try {\n        const response = await fetch(`/api/product/${productId}`);\n        if (!response.ok) {\n          throw new Error('Product not found');\n        }\n        const data = await response.json();\n        setProduct(data);\n        setLoading(false);\n      } catch (err) {\n        setError(err.message);\n        setLoading(false);\n      }\n    };\n\n    fetchProduct();\n    return;\n  }, [productId]); // Add productId to dependency array\n\n  if (loading) return <div>Loading...</div>;\n  if (error) return <div>Error: {error}</div>;\n\n  return (\n    <div>\n      {product && (\n        <div>\n          <h2>{product.name}</h2>\n          <p>{product.description}</p>\n          <p>Price: ${product.price}</p>\n        </div>\n      )}\n    </div>\n  );\n};\n\nProductDetails.propTypes = {\n  productId: PropTypes.string\n};\n\nexport default ProductDetails;\n```\n\n## Beispielaufforderung\n\n> \\[!NOTE] Dieses Beispiel verwendet Playwright für End-to-End-Tests, aber Sie können auch andere Frameworks wie Selenium oder Cypress verwenden.\n\n```copilot copy prompt ref=product-details\nUsing Playwright, generate an e2e test to ensure the product displays correctly.\n```\n\nWenn Sie über einen vorhandenen Test verfügen, den Sie Copilot als Vorlage verwenden möchten, können Sie `#file: path/to/test-file.js` den Pfad zur Datei angeben und diese Informationen in den Prompt aufnehmen.\n\n## Beispielantwort\n\n> \\[!NOTE] Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.\n\nCopilot antwortet mit einem End-to-End-Test, den Sie für Ihre Anwendung verwenden können.\n\n```typescript\nimport { test, expect } from '@playwright/test';\n\ntest.describe('ProductDetails Component', () => {\n  test.beforeEach(async ({ page }) => {\n    // Set up API mocking\n    await page.route('/api/product/1', async (route) => {\n      await route.fulfill({\n        status: 200,\n        contentType: 'application/json',\n        body: JSON.stringify({\n          name: 'Test Product',\n          description: 'This is a test product',\n          price: 99.99\n        })\n      });\n    });\n\n    // Mock error response for product ID 999\n    await page.route('/api/product/999', async (route) => {\n      await route.fulfill({\n        status: 404,\n        contentType: 'application/json',\n        body: JSON.stringify({ error: 'Product not found' })\n      });\n    });\n  });\n\n  test('displays loading state initially', async ({ page }) => {\n    await page.goto('/product/1');\n    const loadingElement = page.locator('text=Loading...');\n    await expect(loadingElement).toBeVisible();\n  });\n\n  test('displays product details correctly', async ({ page }) => {\n    await page.goto('/product/1');\n\n    // Wait for loading to disappear\n    await expect(page.getByText('Loading...')).toBeHidden();\n\n    // Check all product details\n    await expect(page.locator('h2')).toHaveText('Test Product');\n    await expect(page.locator('text=This is a test product')).toBeVisible();\n    await expect(page.locator('text=Price: $99.99')).toBeVisible();\n  });\n\n  test('displays error message when product not found', async ({ page }) => {\n    await page.goto('/product/999');\n\n    // Wait for loading to disappear\n    await expect(page.getByText('Loading...')).toBeHidden();\n\n    // Check error message\n    await expect(page.locator('text=Error: Product not found')).toBeVisible();\n  });\n});\n```\n\n## Weiterführende Lektüre\n\n* [Prompt-Engineering für GitHub Copilot Chat](/de/copilot/concepts/prompting/prompt-engineering)\n* [Bewährte Methoden für die Verwendung von GitHub Copilot](/de/copilot/get-started/best-practices)"}