import {test} from 'node:test';
import assert from 'node:assert/strict';
import {render, screen, within} from '@testing-library/react';
import Board from './main.jsx';
test('Das Brett zeigt neun Felder mit den Zahlen 1 bis 9', () => {
render(<Board />);
const labels = screen.getAllByRole('button').map((button) => button.textContent);
assert.deepEqual(labels, ['1', '2', '3', '4', '5', '6', '7', '8', '9'], 'die Felder zeigen ' + JSON.stringify(labels));
});
test('Die Felder stehen in drei Reihen zu je drei', () => {
const {container} = render(<Board />);
const rows = [...container.children];
assert.equal(rows.length, 3, 'das Brett legt ' + rows.length + ' Element(e) in #root, nicht 3 Reihen');
rows.forEach((row, i) => {
const count = within(row).queryAllByRole('button').length;
assert.equal(count, 3, 'Reihe ' + (i + 1) + ' enthält ' + count + ' Feld(er)');
});
});
test('Reihen und Felder haben ihre CSS-Klassen', () => {
const {container} = render(<Board />);
const rows = container.querySelectorAll('div.board-row').length;
const squares = container.querySelectorAll('button.square').length;
assert.equal(rows, 3, rows + ' Element(e) haben die Klasse board-row');
assert.equal(squares, 9, squares + ' Button(s) haben die Klasse square');
});
test('React gibt keine Warnungen aus', () => {
const warnings = [];
const original = console.error;
console.error = (...args) => warnings.push(args.join(' '));
try {
render(<Board />);
} finally {
console.error = original;
}
assert.deepEqual(warnings, [], 'console.error beim Rendern');
});