Olá Lucas, boa tarde!
Entendo que você está enfrentando dificuldades ao aplicar o padrão Singleton para ambas as plataformas (Android e iOS) em seu projeto com Appium.
Uma possível abordagem para implementar o Singleton seria criar uma classe chamada "DriverManager" que será responsável por gerenciar a instância única do driver para cada plataforma. Essa classe pode ter métodos como "getAndroidDriver" e "getIOSDriver" que retornam a instância do driver correspondente.
Por exemplo, na classe Hooks, você pode utilizar a anotação @Before para inicializar o driver de acordo com a plataforma desejada. Algo como:
@Before("@android")
public void setUpAndroid() {
AppiumDriver<MobileElement> androidDriver = DriverManager.getAndroidDriver();
// Restante do código de inicialização do driver Android
}
@Before("@ios")
public void setUpIOS() {
AppiumDriver<MobileElement> iosDriver = DriverManager.getIOSDriver();
// Restante do código de inicialização do driver iOS
}
Dessa forma, você garante que cada plataforma terá uma única instância do driver, evitando problemas de perda de referência.
No entanto, é importante ressaltar que essa é apenas uma sugestão de implementação e pode variar de acordo com a estrutura do seu projeto. Recomendo que você adapte essa abordagem de acordo com as necessidades específicas do seu caso.
Espero ter ajudado e bons estudos!