← All tasksReact · Junior

Greeting with an input

Write a Greeting component with an input labelled Name (via <label> or aria-label) and a paragraph below it.

The paragraph shows Hello, <name>!, where the name is the typed text without spaces at the ends. If the input is empty or contains only spaces, the paragraph shows Hello, stranger!.

Tests (4)

  1. render(<Greeting />);
    expect(screen.getByText('Hello, stranger!')).toBeTruthy();
  2. render(<Greeting />);
    fireEvent.change(screen.getByLabelText('Name'), { target: { value: 'Anna' } });
    expect(screen.getByText('Hello, Anna!')).toBeTruthy();
  3. render(<Greeting />);
    fireEvent.change(screen.getByLabelText('Name'), { target: { value: '  Bob  ' } });
    expect(screen.getByText('Hello, Bob!')).toBeTruthy();
  4. render(<Greeting />);
    const input = screen.getByLabelText('Name');
    fireEvent.change(input, { target: { value: 'Anna' } });
    fireEvent.change(input, { target: { value: '' } });
    expect(screen.getByText('Hello, stranger!')).toBeTruthy();
    expect(input.value).toBe('');