[JBoss JIRA] (ARQ-1251) Arquillian Drone is unable to instantiate Firefox driver if acceptSslCerts, webStorageEnabled, loggingPrefs properties are used in arquillian.xml
by Karel Piwko (JIRA)
[ https://issues.jboss.org/browse/ARQ-1251?page=com.atlassian.jira.plugin.s... ]
Karel Piwko updated ARQ-1251:
-----------------------------
Affects Version/s: drone_1.1.0.Final
> Arquillian Drone is unable to instantiate Firefox driver if acceptSslCerts, webStorageEnabled, loggingPrefs properties are used in arquillian.xml
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: ARQ-1251
> URL: https://issues.jboss.org/browse/ARQ-1251
> Project: Arquillian
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Extension - Drone
> Affects Versions: drone_1.1.0.Final
> Reporter: Tomas Repel
> Assignee: Karel Piwko
>
> Description of problem:
> If you set these properties via arquillian.xml, the Drone fails to instantiate the Firefox driver. The problem is during creation of org.openqa.selenium.firefox.FirefoxDriver instance, these properties are cast from String to e.g. Boolean (in case of acceptSslCerts) resulting in ClassCastException.
> Snippet of arquillian.xml:
> {code:xml}
> <extension qualifier="webdriver">
> <property name="acceptSslCerts">false</property>
> <property name="webStorageEnabled">false</property>
> <property name="loggingPrefs">someLoggingPrefs</property>
> </extension>
> {code}
> Snippet of Firefox driver injection that fails:
> {code}
> @Drone
> FirefoxDriver browser;
> {code}
> Version-Release number of selected component (if applicable):
> Arquillian 1.0.3.Final
> Arquillian Drone extension 1.1.0.Final
> Selenium 2.27.0 (WebDriver 2)
> How reproducible:
> Always.
> Steps to Reproduce:
> 1. launch functional test using code snippets above
>
> Actual results:
> {noformat}
> Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
> at org.openqa.selenium.firefox.FirefoxDriver.populateProfile(FirefoxDriver.java:148)
> at org.openqa.selenium.firefox.FirefoxDriver.extractProfile(FirefoxDriver.java:133)
> at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:100)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
> at org.jboss.arquillian.drone.webdriver.factory.SecurityActions.newInstance(SecurityActions.java:142)
> ... 50 more
> {noformat}
> Expected results:
> It launches Firefox browser.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] (ARQ-1204) Builder for Warp filters.
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQ-1204?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč resolved ARQ-1204.
-----------------------------
Resolution: Done
> Builder for Warp filters.
> -------------------------
>
> Key: ARQ-1204
> URL: https://issues.jboss.org/browse/ARQ-1204
> Project: Arquillian
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Components: Extension - Warp
> Affects Versions: warp_1.0.0.Alpha1
> Reporter: Jakub Narloch
> Assignee: Jakub Narloch
> Fix For: warp_1.0.0.Alpha2
>
> Original Estimate: 2 hours
> Remaining Estimate: 2 hours
>
> Warp could introduce some builder like functionality for creating filters in the test.
> Example:
> {code}
> import static org.jboss.arquillian.warp.filter.HttpFilters.*;
>
> HttpFilterBuilder restFilter = uri(contains("/rest/service"));
>
> Warp.defaultFilter(restFilter);
>
> Warp
> .execute(...)
> .filter(method(GET).uri(endsWith("/path1")))
> .verify(...);
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] (ARQ-992) Warp does not support request redirection.
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/ARQ-992?page=com.atlassian.jira.plugin.sy... ]
Lukáš Fryč resolved ARQ-992.
----------------------------
Labels: (was: warp)
Resolution: Done
I have introduced new {{RequestCountObserver}} which can be defined using {{HttpFilterBuilder#index(int)}}, the usage can be seen here:
https://github.com/arquillian/arquillian-extension-warp/blob/e86d98794a38...
> Warp does not support request redirection.
> ------------------------------------------
>
> Key: ARQ-992
> URL: https://issues.jboss.org/browse/ARQ-992
> Project: Arquillian
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Extension - Warp
> Affects Versions: warp_1.0.0.Alpha1
> Environment: JBoss AS 7.1.1
> Reporter: Jakub Narloch
> Assignee: Lukáš Fryč
> Priority: Critical
> Fix For: warp_1.0.0.Alpha2
>
> Original Estimate: 1 day
> Remaining Estimate: 1 day
>
> When I was running tests of Spring controllers I found out that whenever a controller is redirecting the response for example by returning a String as view name: {code}return "redirect:welcome.do"{code} the execution of the test hangs till end of timeout.
> I've debuged the WarpFilter and it seems that the Warp header is not beeing added into the 302 HTTP response. On the client side this result with ResponseDeenrichmentFilter can not find any ResponsePayload in response.
> Taking into consideration fact that the RequestEnrichmentFilter allows to push the assertion only once, so when the second request is being made the assertion is not being send once again I'm unable to test such response.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] (ARQGRA-251) JQuery selector with HTMLUnit logs an JS error on console
by Juraj Húska (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-251?page=com.atlassian.jira.plugin... ]
Juraj Húska resolved ARQGRA-251.
--------------------------------
Resolution: Rejected
I am rejecting this at it is not caused by Graphene.
One can suppress the error logs by correct {{java.util.logging}} settings, like described [here|http://vzurczak.wordpress.com/2012/04/15/disabling-htmlunit-logs/].
> JQuery selector with HTMLUnit logs an JS error on console
> ---------------------------------------------------------
>
> Key: ARQGRA-251
> URL: https://issues.jboss.org/browse/ARQGRA-251
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core, ftest
> Affects Versions: 2.0.0.Alpha3
> Reporter: Juraj Húska
> Assignee: Juraj Húska
> Priority: Minor
>
> When using {{JQuery}} locators with Graphene and {{HTMLUnit driver}} following error is logged on console:
> {code}
> Jan 07, 2013 1:22:49 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
> SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '#root:visible' error: Invalid selector: *#root:visible).] sourceName=[injected script] line=[3] lineSource=[null] lineOffset=[0]
> {code}
> The element is however located correctly. Need to find out possible implications and the solution.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] (ARQGRA-251) JQuery selector with HTMLUnit logs an JS error on console
by Juraj Húska (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-251?page=com.atlassian.jira.plugin... ]
Juraj Húska commented on ARQGRA-251:
------------------------------------
Seems to be an issue of HTMLUnit driver. The error disappears with {{2.25.0}}. We are using {{2.28.0}} in Graphene.
> JQuery selector with HTMLUnit logs an JS error on console
> ---------------------------------------------------------
>
> Key: ARQGRA-251
> URL: https://issues.jboss.org/browse/ARQGRA-251
> Project: Arquillian Graphene
> Issue Type: Bug
> Components: core, ftest
> Affects Versions: 2.0.0.Alpha3
> Reporter: Juraj Húska
> Assignee: Juraj Húska
> Priority: Minor
>
> When using {{JQuery}} locators with Graphene and {{HTMLUnit driver}} following error is logged on console:
> {code}
> Jan 07, 2013 1:22:49 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
> SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '#root:visible' error: Invalid selector: *#root:visible).] sourceName=[injected script] line=[3] lineSource=[null] lineOffset=[0]
> {code}
> The element is however located correctly. Need to find out possible implications and the solution.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] (ARQGRA-241) Double quotes in jquery fails
by Juraj Húska (JIRA)
[ https://issues.jboss.org/browse/ARQGRA-241?page=com.atlassian.jira.plugin... ]
Juraj Húska updated ARQGRA-241:
-------------------------------
Status: Resolved (was: Pull Request Sent)
Resolution: Done
> Double quotes in jquery fails
> -----------------------------
>
> Key: ARQGRA-241
> URL: https://issues.jboss.org/browse/ARQGRA-241
> Project: Arquillian Graphene
> Issue Type: Bug
> Affects Versions: 2.0.0.Alpha3
> Reporter: Radek Falhar
> Assignee: Juraj Húska
> Priority: Minor
> Fix For: 2.0.0.Alpha3
>
> Original Estimate: 2 hours
> Remaining Estimate: 2 hours
>
> Using @FindBy(jquery = "a:contains(\"Find owner\")") fails. Replacing it with a:contains('Find owner') makes it work.
> Exception thrown:
> {code}
> org.openqa.selenium.WebDriverException: Can not locate element using selector a:contains("Find owner") Check out whether it is correct!
> Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
> System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-279.14.1.el6.x86_64', java.version: '1.6.0_24'
> Driver info: driver.version: RemoteWebDriver
> at org.jboss.arquillian.graphene.enricher.findby.ByJQuery.findElements(ByJQuery.java:87)
> at org.jboss.arquillian.graphene.enricher.findby.ByJQuery.findElement(ByJQuery.java:102)
> at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:218)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:200)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler$1.invoke(GrapheneProxyHandler.java:134)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invoke(GrapheneProxyHandler.java:164)
> at $Proxy19.findElement(Unknown Source)
> at org.jboss.arquillian.graphene.enricher.AbstractWebElementEnricher$1.getTarget(AbstractWebElementEnricher.java:45)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.getTarget(GrapheneProxyHandler.java:216)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler$1.getTarget(GrapheneProxyHandler.java:157)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler$1.invoke(GrapheneProxyHandler.java:134)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invoke(GrapheneProxyHandler.java:164)
> at $Proxy22.isDisplayed(Unknown Source)
> at org.openqa.selenium.support.ui.ExpectedConditions.elementIfVisible(ExpectedConditions.java:136)
> at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:39)
> at org.openqa.selenium.support.ui.ExpectedConditions$5.apply(ExpectedConditions.java:126)
> at org.openqa.selenium.support.ui.ExpectedConditions$5.apply(ExpectedConditions.java:124)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:59)
> at org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:35)
> at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:201)
> at org.jboss.wfk.test.spring.petclinic.PetclinicTest.findOwner(PetclinicTest.java:91)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:270)
> at org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
> at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
> at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
> at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:53)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
> at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createTestContext(ContainerEventController.java:129)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:89)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
> at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
> at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
> at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:263)
> at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:226)
> at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)
> at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
> at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:240)
> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:185)
> at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314)
> at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
> at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: org.openqa.selenium.WebDriverException: null (WARNING: The server did not provide any stacktrace information)
> Command duration or timeout: 6 milliseconds
> Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
> System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-279.14.1.el6.x86_64', java.version: '1.6.0_24'
> Driver info: driver.version: RemoteWebDriver
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
> at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:170)
> at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:123)
> at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:438)
> at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:353)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:200)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler$1.invoke(GrapheneProxyHandler.java:134)
> at org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invoke(GrapheneProxyHandler.java:164)
> at $Proxy21.executeScript(Unknown Source)
> at org.jboss.arquillian.graphene.enricher.findby.ByJQuery.findElements(ByJQuery.java:77)
> ... 107 more
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months