A DataTable passes tabular data to a single step, letting one step receive multiple values or rows (e.g. a list of products, a set of form fields) without cramming them into the sentence.
Under a step you add a pipe-delimited table; the step definition receives it as a DataTable, which you convert to a List<Map<String,String>>, List<List<String>>, or a List of POJOs via a @DataTableType. This is ideal for form filling (field/value pairs) or verifying a collection (expected rows in a grid). DataTables differ from Scenario Outline: a DataTable feeds ONE step within a single scenario run, while an Outline runs the whole scenario once per row. Use DataTables for structured input/expected data to a step; use Outline to repeat a scenario across cases.
When user registers with:\n | field | value |\n | name | QA |\n | email | qa@test.com |\nā the step receives these field/value pairs and fills the form, keeping the scenario clean.
What's the difference between a DataTable and a Scenario Outline's Examples table?