Giter VIP home page Giter VIP logo

xbdd's People

Contributors

cgarethc avatar dependabot-preview[bot] avatar dependabot[bot] avatar kevinoshea avatar marshallofsound avatar matt-thurling avatar ryan-rushton avatar steveswinsburg avatar whbath avatar xfeier53 avatar xinanz avatar yashitkumarsingh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xbdd's Issues

Docs are out of date

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.

Highlight gherkin keywords

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.

Fix NPM warnings

[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"})

Build buttons don't do anything

The build buttons at the top of a feature should be clickable to see the results for any build. You can mouseover the buttons and see a hand icon with a tooltip of the build number, but clicking it doesn't do anything.

Screen Shot 2020-03-17 at 11 06 49 AM

When project names have special characters, build slideout fails

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)

Add button to export a report

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 is no "nice" solution to running tests in multiple browsers

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

Exports do not have 'embeddings' encoded properly

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>

React WIP: Set up deployment workflow

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.

No WAR

INSTALL.md refers to downloading a WAR, but I couldn't find one on the repository (I may not know where to look).

Build is currently failing

[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

No 'Skip Scenario' button for manual test execution

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.

XBDD does no cleanup of old builds which causes potentially massive storage requirements

Issue

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.

Suggested change to keep the infrastructure requirement in check:

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:

  • Implement functionality in XBDD for removing builds older than a threshold (1 week / 1 month?)
  • Expose that functionality so that it can be triggered externally (from a cron job or a http call from a Bamboo job or whatever works for an individual deployment once this is needed)
  • Implement a flag to make chosen builds safe (either couple to the existing 'pinned' functionality or introduce something similar) - safe builds will never be removed regardless of age.

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.

Allow for multiple levels of tagging

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

  • Australia
    -- NSW
    -- Tasmania

Currently, I get them all as separate tags:

  • Australia
  • NSW
  • Tasmania

All as separate tags.

React WIP: Need to handle failed calls cases

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.

Allow assigning per scenario

If you have a feature that contains many scenarios, it would be useful to be able to assign users to individual scenarios rather than the entire feature.
Screen Shot 2020-05-25 at 10 21 22 am

Handle malformatted embeddings better

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.

Document the admin role

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" />

Doc Strings formatting is not outing as expected.

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.

Github user without name can't login

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.

Dashboard stats could summarise scenarios rather than features

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.

Configuration page for projects

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.

Apparently tags can be optional on a scenario

When calling a some test data I have there is a case when clicking on a scenario result in an error, specifically there are no tags on the returned object. It looks like the parent feature has tags but the scenario doesn't.

image

MongoDB error appears during tests

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;

Unable to start XBDD when following the install.md

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?

React WIP: Set up token authentication

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.

Running YUI Grover tests inconsistent on certain platforms

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.