Description
Whenever the HomePage is submitted, it uses
setResponsePage(new HomePage(xxx)); to open a new page in a new state.
Whenever the form is submitted, the original page processes the form and thus any components that have changed state (e.g., become visible / invisible) remain in their original state and are not processed properly.
More technically:
The browser is viewing page instance X, but the form being processed belongs to the original page instance 0.
It seems that the page set by setReponsePage does not process its own response.