Skip to content

Commit

Permalink
Merge branch '322-bug-browser-is-not-started-for-after-method-if-its-…
Browse files Browse the repository at this point in the history
…declared-in-different-class-than-the-test-itself' into #330-improvement-stabilize-unit-tests
  • Loading branch information
oomelianchuk committed Dec 17, 2024
2 parents 99666f4 + 1d97081 commit 19c6a57
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ public void run(Supplier<Throwable> afterMethodInvocation, Method after, boolean

// if browserConfiguration is null, the browser should not be started for this method and browserTag and
// browserRunner are therefore not required
BrowserMethodData browserTag = browserConfiguration != null ? BrowserData.addKeepBrowserOpenInformation(browserConfiguration.getBrowserTag(), after)
BrowserMethodData browserTag = browserConfiguration != null ? BrowserData.addKeepBrowserOpenInformation(browserConfiguration.getBrowserTag(),
after.getDeclaringClass(), after)
: null;
BrowserRunner browserRunner = browserTag != null ? new BrowserRunner(browserTag, after.getName()) : null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public void run(Supplier<Throwable> beforeMethodInvocation, Method before, boole

// if browserConfiguration is null, the browser should not be started for this method and browserTag and
// browserRunner are therefore not required
BrowserMethodData browserTag = browserConfiguration != null ? BrowserData.addKeepBrowserOpenInformation(browserConfiguration.getBrowserTag(), before)
BrowserMethodData browserTag = browserConfiguration != null ? BrowserData.addKeepBrowserOpenInformation(browserConfiguration.getBrowserTag(),
before.getDeclaringClass(), before)
: null;
BrowserRunner browserRunner = browserTag != null ? new BrowserRunner(browserTag, before.getName()) : null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,14 @@ public class BrowserData extends Data

private List<RandomBrowsers> classRandomBrowsersAnnotation;

private Class<?> testClass;

private static final String SYSTEM_PROPERTY_BROWSERDEFINITION = "browserdefinition";

public BrowserData(Class<?> testClass)
{
this();
this.testClass = testClass;
initClassAnnotationsFor(testClass);
}

Expand Down Expand Up @@ -198,15 +201,15 @@ else if (!classRandomBrowsersAnnotation.isEmpty() && methodBrowsers.isEmpty())
{
return browsers.stream()
.filter(browserTag -> systemBrowserFilter.contains(browserTag))
.map(browserTag -> addKeepBrowserOpenInformation(browserTag, testMethod))
.map(browserTag -> addKeepBrowserOpenInformation(browserTag, testClass, testMethod))
.collect(Collectors.toList());
}
return browsers.stream()
.map(browserTag -> addKeepBrowserOpenInformation(browserTag, testMethod))
.map(browserTag -> addKeepBrowserOpenInformation(browserTag, testClass, testMethod))
.collect(Collectors.toList());
}

public static BrowserMethodData addKeepBrowserOpenInformation(String browserTag, Method method)
public static BrowserMethodData addKeepBrowserOpenInformation(String browserTag, Class<?> testClass, Method method)
{
List<KeepBrowserOpen> methodKeepBrowserOpenAnnotations = getAnnotations(method, KeepBrowserOpen.class);
List<KeepBrowserOpen> classKeepBrowserOpenAnnotations = getAnnotations(method.getDeclaringClass(), KeepBrowserOpen.class);
Expand Down Expand Up @@ -244,7 +247,6 @@ public static BrowserMethodData addKeepBrowserOpenInformation(String browserTag,
}
}
boolean junit5 = method.getAnnotation(NeodymiumTest.class) != null;
Class<?> testClass = method.getDeclaringClass();
List<Method> afterMethodsWithTestBrowser = List.of(testClass.getMethods()).stream()
.filter(classMethod -> (junit5 ? classMethod.getAnnotation(AfterEach.class)
: classMethod.getAnnotation(After.class)) != null)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.xceptance.neodymium.junit4.testclasses.browser.inheritance;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import com.xceptance.neodymium.junit4.tests.NeodymiumWebDriverTest;
import com.xceptance.neodymium.util.Neodymium;

public class BrowserChildTest extends BrowserParent
{
@Before
public void before()
{
Assert.assertNotNull("No browser started for @Before method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}

@Test
public void test()
{
Assert.assertNotNull("No browser started for @Test method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}

@After
public void after()
{
Assert.assertNotNull("No browser started for @After method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
package com.xceptance.neodymium.junit4.testclasses.browser.inheritance;

import org.junit.Assert;
import org.junit.runner.RunWith;

import com.xceptance.neodymium.common.browser.Browser;
import com.xceptance.neodymium.junit4.NeodymiumRunner;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.NeodymiumWebDriverTest;
import com.xceptance.neodymium.util.Neodymium;

@Browser("Chrome_1024x768")
@Browser("Chrome_1500x1000")
@RunWith(NeodymiumRunner.class)
public abstract class BrowserParent
{

@NeodymiumTest
public void testParent()
{
Assert.assertNotNull(Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.xceptance.neodymium.junit5.testclasses.browser.inheritance;

import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.NeodymiumWebDriverTest;
import com.xceptance.neodymium.util.Neodymium;

public class BrowserChildTest extends BrowserParent
{
@BeforeEach
public void before()
{
Assert.assertNotNull("No browser started for @BeforeEach method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}

@NeodymiumTest
public void test()
{
Assert.assertNotNull("No browser started for @NeodymiumTest method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}

@AfterEach
public void after()
{
Assert.assertNotNull("No browser started for @AfterEach method", Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
package com.xceptance.neodymium.junit5.testclasses.browser.inheritance;

import org.junit.Assert;

import com.xceptance.neodymium.common.browser.Browser;
import com.xceptance.neodymium.junit5.NeodymiumTest;
import com.xceptance.neodymium.junit5.tests.NeodymiumWebDriverTest;
import com.xceptance.neodymium.util.Neodymium;

@Browser("Chrome_1024x768")
@Browser("Chrome_1500x1000")
public abstract class BrowserParent
{

@NeodymiumTest
public void testParent()
{
Assert.assertNotNull(Neodymium.getDriver());
NeodymiumWebDriverTest.assertWebDriverAlive(Neodymium.getDriver());
}
}

0 comments on commit 19c6a57

Please sign in to comment.