---
title: "Verify Android keyboard submission and validation"
description: "Exercise an Android form through its keyboard action and visible submit button to catch duplicate saves, missing validation, and obstructed errors."
canonical_url: "https://vostride.com/agent-library/android-flows/keyboard-submit-and-validation.md"
md_url: "https://vostride.com/agent-library/android-flows/keyboard-submit-and-validation.md"
content_kind: "recipe"
topic: "android-flows"
---

# Verify Android keyboard submission and validation

Exercise an Android form through its keyboard action and visible submit button to catch duplicate saves, missing validation, and obstructed errors.

## Risk

A keyboard action can bypass a validation path used by the visible button. The test needs both an invalid attempt and a corrected submission, with record counts proving that the first attempt did not quietly persist.

## Fixtures

- An Android target and local or hosted device profile with an explicitly selected app-state policy.
- A sandbox contact form whose email field is required, whose notes field is multiline, and whose accepted keyboard action is documented.
- A test account with an empty contact list and an independent API lookup limited to a unique run-specific contact name.

## Steps

1. Open the contact editor, enter the unique name and an invalid email, and verify the exact entered characters appear before submission.
2. Invoke the keyboard action offered by the email field and verify a specific email validation message appears without leaving the editor.
3. Read the independent sandbox contact lookup and verify that the invalid submission created no contact.
4. Correct the email, enter two note lines, use the visible Save button, and verify the detail screen shows the corrected address and both lines.
5. Return to the list and verify exactly one matching contact; compare the independent stored record with the displayed values and verify a single committed identifier.

## Expected results

- The invalid email produces a field-specific error and no committed contact identifier.
- The accepted contact has the corrected email and complete multiline notes in the data oracle.
- Both list and detail resolve to the same single saved contact.

## False-pass traps

- A dismissed keyboard is not evidence that validation executed.
- Finding one visible row can hide duplicate records on another page, so query the complete run-specific collection.

## Cleanup

- Delete the created sandbox contact and clear any invalid draft retained by the app.

## Use with agent-qa

Adapt this test design to your application's acceptance criteria and configured target using the [recipe execution guide](/agent-library/software-factory/turn-a-recipe-into-an-agent-qa-test.md). External fixture setup and non-UI checks require your own supported hooks or test tooling. Validate the authored test, execute it, and inspect the completed evidence; this recipe is not a recorded test result.

## References

- [agent-qa mobile testing](/docs/agent-qa/guides/mobile-testing.md)
- [agent-qa test](/docs/agent-qa/configuration/test.md)
- [agent-qa hooks](/docs/agent-qa/guides/hooks.md)

- [Android application QA recipes](/agent-library/android-flows.md)
- [Software factory QA library](/agent-library.md)
