java.awt.Robot - какие подводные камни на не-Windows платформах?

Пишу небольшой фреймворк для личного развития с использованием технологий, которые не получается применять на реальных проектах (Selenide, Spring, Hibernate) на примере тестирования Gmail. Хочу что б мой проект работал на нескольких платформах, основные проблемы связанные с этим я решил, единственный нюанс это работа java.awt.Robot (использую для аплоада файлов в письма) - я с ним раньше никогда не работал и не знаю какие у него есть нюансы, тем не менее на Windows всё ок, робот, что называется, работает (там простые команды ctrl + v и нажать enter), а вот как это будет на линуксе и MacOS? Кто-то сталкивался с чем-то подобным?

Основные подводные камни Robot'a - это невозможность работы в хэдлес режиме, и удаленно (через грид, к примеру). Но к платформам это никакого отношения не имеет. Java - кросплатформенный язык.

Java - кросплатформенный язык.

Это точно. Однако, кросплатформенность java.awt, насколько мне известно, ограниченная, т.к. одни и те же элементы интерфейса на разных платформах могут вести себя по-разному. Другими словами, я не уверен что такой способ зааплоадить файл сработает на макосе, но проверить не могу, поэтому и спрашивал сталкивался ли кто-то с подобным.

Основные подводные камни Robot’a - это невозможность работы в хэдлес режиме, и удаленно (через грид, к примеру)

И что в таком случае принято применять вместо него?

Ну в хэдлес режиме вас ничего не спасет. Все подобные тулы / библиотеки требуют active desktop mode.

Я бы все же рекомендовал посмотреть на реализацию аплоадера. Если ключевой элемент является input с типом file, то проще воспользоваться встроенными возможностями webdriver, отправляя путь через sendKeys. Бывают правда кейсы, когда input скрыт. Тогда его можно вначале насильно сделать видимым через JS, а затем проделать те же самые действия.

В случае кастомного аплоадера, где вообще нет инпутов, тут могут помочь image recognition tools по типу sikulix (либо сырой opencv). Пожалуй, это единственный кросплатформенный вариант.

В случае с удаленным запуском, вам потребуется ремоутная версия sikulix. Либо в качестве альтернативы можно и Robot поднять на удаленке (в виде микро-сервиса).

В крайнем случае, можно узнать end-point аплоадера, и отправить stream c помощью REST / SOAP (или что там у вас используется).