orionhealth / xbdd Goto Github PK
View Code? Open in Web Editor NEWUse Cukes for your automated and manual testing!
License: Apache License 2.0
Use Cukes for your automated and manual testing!
License: Apache License 2.0
There is no reference to the MongoDB setup and Phantom JS is now provided by the maven plugin.
I'll do some house cleaning here.
It would be great if XBDD could highlight the gherkin keywords (ie Given, When, Then) - even if bolded. This would make it much easier to read. The HTML already has class wrappers around them.
So we can set up the token auth on our CD server we should set up an open ldap docker box and populate it with some logins for people to use and test with
[INFO] --- frontend-maven-plugin:1.5:npm (install node dependencies) @ xbdd ---
[INFO] Running 'npm install' in /Users/stevium/dev/XBDD
[WARNING] npm WARN deprecated [email protected]: connect 2.x series is deprecated
[WARNING] npm WARN deprecated [email protected]: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN deprecated [email protected]: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN deprecated [email protected]: Use uuid module instead
[WARNING] npm WARN deprecated [email protected]: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=0.10.32"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN deprecated [email protected]: express 2.x series is deprecated
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=4.0.0"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=0.12.0"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN deprecated [email protected]: connect 1.x series is deprecated
[WARNING] npm WARN deprecated [email protected]: package renamed to "urijs" (lower-case), please update accordingly
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN engine [email protected]: wanted: {"node":">=4"} (current: {"node":"0.10.30","npm":"1.4.21"})
[WARNING] npm WARN deprecated [email protected]: connect 2.x series is deprecated
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN deprecated [email protected]: Use uuid module instead
[WARNING] npm WARN deprecated [email protected]: Old versions of Formidable are not compatible with the current Node.js; Upgrade to 1.2.0 or later
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
[WARNING] npm WARN engine [email protected]: wanted: {"node":">= 8"} (current: {"node":"0.10.30","npm":"1.4.21"})
If a project name has a special character, ie myproject>123 then clicking on the project gives a javascript error:
Uncaught TypeError: Cannot read property 'get' of null
at Object.navSlideOut (buildNav.js:1)
at p.<anonymous> (buildNav.js:1)
at e.Subscriber._notify (event-custom-base-min.js:9)
at e.Subscriber.notify (event-custom-base-min.js:9)
at e.CustomEvent._notify (event-custom-base-min.js:8)
at e.CustomEvent._procSubs (event-custom-base-min.js:8)
at e.CustomEvent.fireSimple (event-custom-base-min.js:8)
at e.CustomEvent._fire (event-custom-base-min.js:8)
at e.CustomEvent.fire (event-custom-base-min.js:8)
at HTMLAnchorElement.a.fn (event-base-min.js:8)
Reports are already able to be exported via a special URL:
https://xbdd.yourserver.com/xbdd/rest/reports/[product]/[version]/[build]
Add a button to expose this fucntionality.
Depends on #46
There are a bunch of endpoints in the backend that are unlikely to be used or could be better organised. It would be good to clean those up for the upcoming v2.
Currently if you want to run tests in multiple browsers there is no nice way for XBDD to display the results. The current workaround is to either have multiple products [Product Name]-[Browser] or multiple version.
Looking for ideas both for both the UI and back end as to how we could implement in XBDD multiple browsers
Through a GET request it is possible to export the data from a report. There is no UI control for this yet (see #47 )
For example: https://xbdd.yourserver.com/xbdd/rest/reports/[product]/[version]/[build]
However the 'embeddings' in this file are not formatted correctly and when you import this file it will fail with:
java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject
at xbdd.webapp.resource.feature.Report.embedSteps(Report.java:209)
at xbdd.webapp.resource.feature.Report.putReport(Report.java:353)
at xbdd.webapp.resource.feature.Report.uploadFile(Report.java:426)
The exported file contains:
"embeddings": ["x1.0505p16x1.7f32p16-x1.a823p16-x1.b1e1p16-x1.934fp16-x1.948p16x1.ac99p16x1.b5dcp16"],
A real file, and what XBDD expects, contains:
"embeddings": [
{
"data": "iVBORw0KGgoAAAANSUhEUgAABQAAAAOKCAYAAADEH/1zAAAgAElEQVR4nOzdeVxU9cIGcLq9do0Wtaw016S9tM2yrma3W7ewLK1sL5NA9n0XlFUUBHHDlVRccwvFBXEDUVRwZ5UdZAcRZFRAgXneP7icGGYfhkV4vp/P8/ncOdv8zgye952ns+iAiIiIiIiIiIiIeiydrh4AERERERERERERdRwWgERERERERERERD0YC0AiIiIiIiIiIqIejAUgERERERERERFRD8YCkIiIiIiIiIiIqAdjAUhERERERERERNSDsQAkIiIiIiIiIiLqwVgAEhERERERUbdy40Y1cnIykZqahKSkS/dUUlOTkJOThZqaG71ifxmG6dxocowBWAASERERERFRN1JSUowrV1JRU3MDDQ0NXT0ctTU0NKCm5gbS09NQWlqsdPl7fX+JOlNS0qWuHkKXU/cY04IFIBEREREREXULIlENrlxJRWNjY1cPpd0aGxtx5UoKRKIaucv0pP0l6gwsAP+myjGmNRaARERERERE1C1ocllbd9Z8aW+W3Pk9bX+JOhoLQEnKjjGtsQAkIiIilZUV5yMhPhbHjkUh6tABhmE6OceORSEhPhZlxfldfTgg6hApKYloampq93YKCwuRkpKshRG1T2NjI1JSkuTO19b+EvUWLAAlKTvGtMYCkIiIiFSSnnYJx2MOoywvEXeqsgBRLsMwnZw7VVkoy7+ME7GHkZHGH0HU82jrx72PjxeMjAxQW1urle21h6J9YplBpB7+m5Gm6mfCApCIiIiUqigtwPGYw7jL4o9hukXuVmXh+PFDqCgr7OrDA5FWtefH/d27dxERsRv29rYwNJwBQ8MZMDc3wdq1oaiurtbiKNXDApBIe/hvRhoLQCIiItKahPhYlOUldnnpwTDM3ynLS8TZ+BNdfXigXqC2thYbN4YhNHQ1qqqqADQ/hXL
<snip>
It would be nice to make this deployable with minimal configuration and completely scripted. The aim is a beta build of the react branch that gets deployed when a push is detected to the react branch.
To document the init params like the phantomjs ones.
ref:
https://github.com/orionhealth/XBDD/blob/cccabb050511cf3dd890176de79347c751e177a5/src/main/java/xbdd/webapp/resource/feature/PrintPDF.java
submit input must be added to the dom
INSTALL.md refers to downloading a WAR, but I couldn't find one on the repository (I may not know where to look).
[INFO] Downloading phantomjs binaries from https://phantomjs.googlecode.com/files/phantomjs-1.9.2-macosx.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29:06 min
[INFO] Finished at: 2017-07-24T22:18:47+10:00
[INFO] Final Memory: 48M/250M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.klieber:phantomjs-maven-plugin:0.2:install (default) on project xbdd: Unable to download phantomjs binary from https://phantomjs.googlecode.com/files/phantomjs-1.9.2-macosx.zip -> [Help 1]
This plugin is out of date. There is a reference to the older version due to the CI server however this is using Travis now so shouldn't be an issue.
Likewise a couple of other build warnings need to be cleaned up
When manually executing test cases, it would be useful to set the scenario status as skipped.
Support already exists to upload scenarios with a status of "skipped", but this functionality is not supported when recording results of manual test executions using XBDD UI.
This feature would be useful when executing subsets of manual regression, and would also enable testers to record the reason/rationale why the scenario was excluded from the subset.
The XBDD deploy I have contact with receives builds from a few dozen projects and its Mongo store is currently growing by multiple GB per day. It blew up yesterday when it ran the 100GB database partition out of space, and at the current rate of growth will run its new 300GB partition out of space some time this quarter. (Granted, broad uptake of the product is a nice issue to have).
The majority of space is taken up by attached screenshots, rather than the results themselves.
One of the main benefits we derive from XBDD is easy traceabilty from the requirement (cucumber scenario) to a test result. To realize this benefit we really only need the test results for one (or a small number of) builds per product version - usually the final build or builds before release of that version. The series of beta builds leading up to the final one are useful short term, but do not need to be stored indefinitely.
What I suggest is:
A softer approach could leave the builds but drop attachments. This would require implementing some error handling to deal with the broken image links in the UI. Need to consider if we want to treat uploaded results & attachments differently from manually entered results & attachments (I suggest not).
Making the time threshold for cleanup a parameter on the triggering call would be sensible since that avoids having to hard code an arbitrary time period and will allow deployments to fine tune cleanup to their constraints.
XBDD only allows for one level of tagging.
If I have multiple feature files that related to each other, it would be nice to be able to tag each with multiple related tags to have them grouped.
For example, I tag a feature with the following two tags
@australia @nsw
And another with:
@australia @Tasmania
It would be nice if XBDD grouped these in a nested structure, such as
Currently, I get them all as separate tags:
All as separate tags.
Currently when you load the app, put in a user name and hit login, you get a js as the database doesn't return any data.
A bunch of the rest call appear not to have error handlers on them. We need to handle those cases and provide adequate error messages.
We have some feature files that contain URLs.
It would be nice if XBDD was able to parse these into clickable links to save having to copy and paste.
Embeddings are meant to be base64 data encoded in the 'data' attribute. If this is not present, as per #46, the import falls over completely. Make this a bit more tolerant.
Upgrade the driver code:
http://mongodb.github.io/mongo-java-driver/3.0/whats-new/upgrading/
Optional: Write doco on upgrading the database:
https://askubuntu.com/questions/643252/how-to-migrate-mongodb-2-6-to-3-0-with-wiredtiger
It looks like we have missed that value in the summary models/rest call. We need to figure out what field is being populated when a build is pinned and surface that through the summary rest call.
When a build is searched in the build navigation the action menu for all builds does not display correctly such none of the actions are visible
If a user is granted the admin
role then they get elevated privileges to delete builds and projects. This is not documented.
In tomcat=users.xml
:
<role rolename="admin"/>
Then assign the the role, eg:
<user username="xbdd-admin" password="something" roles="admin" />
In the cucumber reference it states that you can use python style doc strings for larger blocks of text. For example
Given a blog post named "Random" with Markdown body
"""
Some Title, Eh?
===============
Here is the first paragraph of my blog post. Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
"""
This doesn't appear to be working on XBDD. The particular example we used had this style doc string after a 'Then' keyword.
If a user has a profile where they haven't populated their name log in will fail as the display value on the user is not populated. We should have a fallback when creating the user that will use their account name.
Each scenario is technically a single test, so the build summary statistics should summarise all scenarios rather than all features.
Many feature files contain a mix of manual and automated scenarios, which means the reported proportion of "manual" tests is much higher than reality. Similarly, one failing scenario causes the proportion of "failing" tests to appear much higher than reality.
Discussion in HipChat room:
Current behaviour (feature-based) is useful for regression testing; this could be retained as an option.
Reporting / Printing still makes sense on a per feature basis.
An enhancement to #31 would be to have a configuration section for each project in XBDD which allows each project to control how many previous build reports are kept, and then a scheduler to clean up old ones. This would need to take into account pinned builds so that they are not accidentally deleted as they are often used as the one to perform regression testing against.
Does not occur in chrome, produced in firefox.
Moving a build to the top or bottom and then saving appends 'Move to Top Move to Bottom' to the build name.
Appears that firefox get('text') is returning all text, including that inside the buttons.
The product version doesn't allow a Maven -SNAPSHOT style version scheme.
e.g. 1.0-SNAPSHOT
is not allowed.
There are some usages of Guava which is now available in Java8. These can be replaced.
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Collections2.html
Testers disable javascript as part of manual testing.
Pages require noscript tags telling users they must enable javascript for XBDD to function correctly
When input fields for a feature are filled out and then the feature is deselected, input cannot be saved
In the event that two scenario's are give the same string identifier
e.g.
Scenario: Blah
When content is first
Scenario: Blah
When content is second
Then the second scenario cannot be accessed in the web app for manual testing.
XBDD keeps uploaded build reports forever. It would be good to be able to delete reports that are no longer needed or are out of date.
com.mongodb.CommandFailureException: { "serverUsed" : "localhost:39191" , "errmsg" : "exception: Invalid modifier specified $setOnInsert" , "code" : 10161 , "ok" : 0.0}
Something to do with the way we use embed-mongo
to run the tests. The modifier is valid however;
When I try to start tomcat with the xbdd.war I get the following error:
SEVERE: Exception starting filter xbdd.webapp.XbddApplication
MultiException stack 1 of 2
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;
at org.glassfish.jersey.server.ServerExecutorsFactory$2.getRespondingExecutor(ServerExecutorsFactory.java:89)
at org.glassfish.jersey.process.internal.ExecutorsFactory.getInitialRespondingExecutor(ExecutorsFactory.java:126)
at org.glassfish.jersey.server.ServerExecutorsFactory.<init>(ServerExecutorsFactory.java:85)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1117)
at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:261)
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:337)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:112)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:100)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:95)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:150)
at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:192)
at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:150)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2350)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:580)
at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:803)
at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:832)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:907)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:898)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:485)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:287)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:284)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:302)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:379)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4950)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5652)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1312)
at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:683)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
MultiException stack 2 of 2
java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.server.ServerExecutorsFactory
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:364)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:112)
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:100)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:95)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:150)
at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:192)
at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:150)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2350)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:580)
at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:77)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:803)
at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:832)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:907)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:898)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:485)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:287)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:284)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:302)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:379)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4950)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5652)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1312)
at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:683)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
What can I do?
The react branch currently has no authentication. As a start we should move to token based jwt authentication that can be backed by basic auth (for dev purposes) and an ldap for production. SSO would be a bonus.
Rather than hardcoding words we need to implement i18n or something to handle translations.
Running the YUI grover tests through the shell plugin is still giving inconsistant results between certain configurations of node on windows. We should switch to the grunt-grover
plugin for cross platform consistency.
Using variables to determine platform path slashes for instance is bad (In Gruntfile.js)
If input fields have been edited or statuses changed, uploading an attachment causes the changes to be lost without prompting the user
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.