diff --git a/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java b/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java index d6975dca7a0df5475978659f6a37cb2f92e54a29..3a6dfe121fd2eed861b6c782c6c4b18797be4a19 100644 --- a/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java +++ b/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java @@ -147,7 +147,7 @@ public class ThreadLocalUserActivityLogger { public static void log(ILoggingAction loggingAction, Class<?> callingClass, ILoggingResourceable... loggingResourceables) { IUserActivityLogger logger = userActivityLogger_.get(); if (logger==null) { - log_.error("No ThreadLocal IUserActivityLogger set - cannot log to database: "+loggingAction.getActionVerb()); + log_.debug("No ThreadLocal IUserActivityLogger set - cannot log to database: {}", loggingAction.getActionVerb()); } else { logger.log(loggingAction, callingClass, loggingResourceables); } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index 0dae436ec6a5048921be42bd2a82de819242ff8e..77567666cd25a97af95fd8b59de15152ba8847ce 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -32,6 +32,7 @@ import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.Group; import org.olat.basesecurity.IdentityRef; import org.olat.basesecurity.model.IdentityRefImpl; +import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -156,6 +157,8 @@ public class IdentityListCourseNodeController extends FormBasicController private ConfirmUserVisibilityController changeUserVisibilityCtrl; private ContactFormController contactCtrl; + @Autowired + private DB dbInstance; @Autowired private UserManager userManager; @Autowired @@ -931,6 +934,7 @@ public class IdentityListCourseNodeController extends FormBasicController scoreEval.getCurrentRunStatus(), scoreEval.getAssessmentID()); courseAssessmentService.updateScoreEvaluation(courseNode, doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + dbInstance.commitAndCloseSession(); } loadModel(ureq); } @@ -952,6 +956,7 @@ public class IdentityListCourseNodeController extends FormBasicController for(AssessedIdentityElementRow row:rows) { Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentityKey()); doSetDone(assessedIdentity, courseNode, course); + dbInstance.commitAndCloseSession(); } loadModel(ureq); } diff --git a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java index ba8f3dfe80588e44759a04f1ae09e0778523bc56..f90778dfd0b76d04c176fa6dc6aafc8e73fd2942 100644 --- a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java +++ b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java @@ -262,8 +262,9 @@ public class AuthenticatedDispatcher implements Dispatcher { ws.disposeClosedWindows(ureq); Window window = ws.getWindow(ureq); if (window == null) { - //probably a - if(usess.isSavedSession() && !usess.getHistoryStack().isEmpty()) { + if(request.getPathInfo() != null && request.getPathInfo().contains("close-window")) { + DispatcherModule.setNotContent(request.getPathInfo(), response); + } else if(usess.isSavedSession() && !usess.getHistoryStack().isEmpty()) { redirectToDefaultDispatcher(request, response); } else { DispatcherModule.sendNotFound(request.getRequestURI(), response); diff --git a/src/main/java/org/olat/dispatcher/RESTDispatcher.java b/src/main/java/org/olat/dispatcher/RESTDispatcher.java index 01d2b6383460aae4318f92b99aecd18930b95381..8e9e56135b2a0a18470c9c32a6eb605f4719b220 100644 --- a/src/main/java/org/olat/dispatcher/RESTDispatcher.java +++ b/src/main/java/org/olat/dispatcher/RESTDispatcher.java @@ -24,7 +24,6 @@ */ package org.olat.dispatcher; -import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Locale; @@ -40,11 +39,7 @@ import org.olat.core.dispatcher.DispatcherModule; import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequestImpl; import org.olat.core.gui.Windows; -import org.olat.core.gui.components.Window; -import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.media.ServletUtil; -import org.olat.core.gui.render.StringOutput; -import org.olat.core.gui.render.URLBuilder; import org.olat.core.id.Identity; import org.olat.core.id.context.BusinessControl; import org.olat.core.id.context.BusinessControlFactory; @@ -221,17 +216,9 @@ public class RESTDispatcher implements Dispatcher { DispatcherModule.redirectToDefaultDispatcher(response); } } else if (Windows.getWindows(usess).getChiefController(ureq) == null) { - /* // Session is already available, but no main window (Head-less REST // session). Only create the base chief controller and the window - ChiefController cc = AuthHelper.createAuthHome(ureq); - //the user is authenticated successfully with a security token, we can set the authenticated path - cc.getWindow().setUriPrefix(WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED); - Windows ws = Windows.getWindows(ureq); - ws.registerWindow(cc); - // no need to call setIdentityAsActive as this was already done by RestApiLoginFilter... - */ - redirectAuthenticatedTo(usess, ureq, businessPath, encodedRestPart); + redirectAuthenticatedTo(usess, ureq, encodedRestPart); return; } } @@ -239,14 +226,14 @@ public class RESTDispatcher implements Dispatcher { boolean auth = usess.isAuthenticated(); if (auth) { - redirectAuthenticatedTo(usess, ureq, businessPath, encodedRestPart); + redirectAuthenticatedTo(usess, ureq, encodedRestPart); } else { //prepare for redirect setBusinessPathInUserSession(usess, businessPath, ureq.getParameter(WINDOW_SETTINGS)); String invitationAccess = ureq.getParameter(AuthenticatedDispatcher.INVITATION); if (invitationAccess != null && loginModule.isInvitationEnabled()) { // try to log in as anonymous - // use the language from the lang paramter if available, otherwhise use the system default locale + // use the language from the lang parameter if available, otherwise use the system default locale Locale guestLoc = getLang(ureq); int loginStatus = AuthHelper.doInvitationLogin(invitationAccess, ureq, guestLoc); if ( loginStatus == AuthHelper.LOGIN_OK) { @@ -266,7 +253,7 @@ public class RESTDispatcher implements Dispatcher { DispatcherModule.redirectToDefaultDispatcher(response); } else if (guestAccess.equals(AuthenticatedDispatcher.TRUE)) { // try to log in as anonymous - // use the language from the lang paramter if available, otherwhise use the system default locale + // use the language from the lang parameter if available, otherwise use the system default locale Locale guestLoc = getLang(ureq); int loginStatus = AuthHelper.doAnonymousLogin(ureq, guestLoc); if ( loginStatus == AuthHelper.LOGIN_OK) { @@ -283,20 +270,10 @@ public class RESTDispatcher implements Dispatcher { } } - private void redirectAuthenticatedTo(UserSession usess, UserRequest ureq, String businessPath, String encodedRestPart) { - String url; - if (Windows.getWindows(usess).getChiefController(ureq) == null) { - // Session is already available, but no main window (Head-less REST - // session). Only create the base chief controller and the window - setBusinessPathInUserSession(usess, businessPath, ureq.getParameter(WINDOW_SETTINGS)); - ChiefController cc = AuthHelper.createAuthHome(ureq); - url = getRedirectToURL(cc); - if(usess != null && !ureq.getHttpReq().isRequestedSessionIdFromCookie()) { - url += ";jsessionid=" + usess.getSessionInfo().getSession().getId(); - } - } else { - //redirect to the authenticated dispatcher which support REST url - url = WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED + encodedRestPart; + private void redirectAuthenticatedTo(UserSession usess, UserRequest ureq, String encodedRestPart) { + String url = WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED + encodedRestPart; + if(usess != null && !ureq.getHttpReq().isRequestedSessionIdFromCookie()) { + url += ";jsessionid=" + usess.getSessionInfo().getSession().getId(); } DispatcherModule.redirectTo(ureq.getHttpResp(), url); } @@ -336,16 +313,4 @@ public class RESTDispatcher implements Dispatcher { } return guestLoc; } - - private String getRedirectToURL(ChiefController cc) { - Window w = cc.getWindow(); - URLBuilder ubu = new URLBuilder(WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED, w.getInstanceId(), w.getTimestamp(), w.getCsrfToken()); - try(StringOutput sout = new StringOutput(30)) { - ubu.buildURI(sout, null, null); - return sout.toString(); - } catch(IOException e) { - log.error("", e); - return ""; - } - } } diff --git a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java index 4e1a9654dc226b5923136045a14c5176037c77dd..66f461ab479e73a09f6442e7dfc746bf29433cdd 100644 --- a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java +++ b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java @@ -698,7 +698,7 @@ public class AssessmentTestSessionDAO { sb.append(" and membership.role='").append(GroupRoles.participant.name()).append("'"); } sb.append(" )"); - } else if(searchParams.getLimitToIdentities() != null) { + } else if(searchParams.getLimitToIdentities() != null && !searchParams.getLimitToIdentities().isEmpty()) { sb.append(" testSession.identity.key in (select membership.identity.key from bgroupmember as membership, repoentrytogroup as rel") .append(" where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.identity.key in (:limitIdentityKeys)") .append(" and membership.role='").append(GroupRoles.participant.name()).append("'") diff --git a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java index e0e13e6f88a77c212fea4a1c46b52e84a70e3090..25fcb8f48f122fb36d3ede73b2dc468bb6b953eb 100644 --- a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java +++ b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java @@ -476,11 +476,8 @@ public class QTI21ArchiveFormat { AssessmentItemSession itemSession = response.getAssessmentItemSession(); sessionResponses.addResponse(itemSession, response); } - writeDataRow(i + 1, sessionResponses, exportSheet, workbook); - - if(i % 25 == 0) { - DBFactory.getInstance().commitAndCloseSession(); - } + writeDataRow(i + 1, sessionResponses, exportSheet, workbook); + DBFactory.getInstance().commitAndCloseSession(); } } diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java index 9d8a2452637c25e1f7d1cd588bd2e7be4a17a468..2deb8666a308524f62561ba1de5e2d9b74c3d8ee 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java @@ -282,6 +282,12 @@ public class HotspotAssessmentItemBuilder extends AssessmentItemBuilder implemen return correctAnswers.contains(choice.getIdentifier()); } + public void clearCorrectAnswers() { + if(correctAnswers != null) { + correctAnswers.clear(); + } + } + public void setCorrect(HotspotChoice choice, boolean correct) { if(correctAnswers == null) { correctAnswers = new ArrayList<>(); @@ -425,6 +431,7 @@ public class HotspotAssessmentItemBuilder extends AssessmentItemBuilder implemen //add question getHtmlHelper().appendHtml(assessmentItem.getItemBody(), question); + //add interaction if(correctAnswers.size() == 1 && cardinality == Cardinality.SINGLE) { hotspotInteraction.setMaxChoices(1); diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java index 7a76b362b0aa66a1ccd4e66f35f7e7b95ac6c4e5..44b4f62e988c763cb9031ee5332559e2ada3351e 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java @@ -31,6 +31,7 @@ import java.util.zip.ZipOutputStream; import org.olat.basesecurity.GroupRoles; import org.olat.core.commons.modules.bc.FolderConfig; +import org.olat.core.commons.persistence.DB; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; @@ -87,6 +88,8 @@ public class QTI21ResetDataController extends FormBasicController { private CourseEnvironment courseEnv; private RepositoryEntry assessedEntry; + @Autowired + private DB dbInstance; @Autowired private QTI21Service qtiService; @Autowired @@ -213,6 +216,7 @@ public class QTI21ResetDataController extends FormBasicController { Role.coach); courseAssessmentService.updateCurrentCompletion(courseNode, uce, null, AssessmentRunStatus.notStarted, Role.coach); + dbInstance.commitAndCloseSession(); } } else if(assessedEntry != null) { archiveData(assessedEntry); diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsController.java index ffd74086c7e9d45b8c8cc0928bd9464c4800252b..9f8ff3853d1ed1c8e7fd7efb694a3ac7514fc63c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21RetrieveTestsController.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Set; import org.olat.basesecurity.GroupRoles; +import org.olat.core.commons.persistence.DB; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; @@ -73,6 +74,8 @@ public class QTI21RetrieveTestsController extends FormBasicController { private List<Identity> identities; private List<AssessmentTestSession> sessions; + @Autowired + private DB dbInstance; @Autowired private UserManager userManager; @Autowired @@ -149,7 +152,7 @@ public class QTI21RetrieveTestsController extends FormBasicController { } String msg; - if(sessionsToRetrieve.size() == 0) { + if(sessionsToRetrieve.isEmpty()) { msg = translate("retrievetest.nothing.todo"); } else if(sessionsToRetrieve.size() == 1) { msg = translate("retrievetest.confirm.text", new String[]{ fullnames.toString() }); @@ -193,6 +196,7 @@ public class QTI21RetrieveTestsController extends FormBasicController { .createAndInitUserCourseEnvironment(session.getIdentity(), courseEnv); courseNode.pullAssessmentTestSession(session, assessedUserCourseEnv, getIdentity(), Role.coach); } + dbInstance.commitAndCloseSession(); } private DigitalSignatureOptions getSignatureOptions(AssessmentTestSession session) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java index c58fb62716f9804382547238d89b629ed8bb1e06..4b29a9350d117c41e5f7177d814afa5ee4995d04 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java @@ -375,9 +375,7 @@ public class HotspotEditorController extends FormBasicController { updateHotspots(ureq); updateHotspotsPosition(backgroundSize); } else if(correctHotspotsEl == source) { - MultipleSelectionElement correctEl = (MultipleSelectionElement)source; - Collection<String> correctResponseIds = correctEl.getSelectedKeys(); - doCorrectAnswers(correctResponseIds); + doCorrectAnswers(correctHotspotsEl.getSelectedKeys()); flc.setDirty(true); } else if(layoutEl == source) { updateLayoutCssClass(); @@ -439,6 +437,7 @@ public class HotspotEditorController extends FormBasicController { private void doCorrectAnswers(Collection<String> correctResponseIds) { List<HotspotChoice> choices = itemBuilder.getHotspotChoices(); + itemBuilder.clearCorrectAnswers(); for(int i=0; i<choices.size(); i++) { HotspotChoice choice = choices.get(i); boolean correct = correctResponseIds.contains(choice.getIdentifier().toString()); @@ -514,6 +513,8 @@ public class HotspotEditorController extends FormBasicController { objectImg = initialBackgroundImage; } + doCorrectAnswers(correctHotspotsEl.getSelectedKeys()); + if(cardinalityEl.isOneSelected()) { String selectedCardinality = cardinalityEl.getSelectedKey(); itemBuilder.setCardinality(Cardinality.valueOf(selectedCardinality)); diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminController.java index 4ac6053ca0e4f3ab50f7245b340f7b7744c08857..090b0e7cf704850d1ddcf445d97532eea9a896e7 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminController.java @@ -145,13 +145,12 @@ public class BigBlueButtonAdminController extends BasicController implements Act } private void doOpenConfiguration(UserRequest ureq) { - if(configCtrl == null) { - WindowControl bwControl = addToHistory(ureq, OresHelper.createOLATResourceableInstance("Configuration", 0l), null); - configCtrl = new BigBlueButtonConfigurationController(ureq, bwControl); - listenTo(configCtrl); - } else { - addToHistory(ureq, configCtrl); - } + removeAsListenerAndDispose(configCtrl); + + WindowControl bwControl = addToHistory(ureq, OresHelper.createOLATResourceableInstance("Configuration", 0l), null); + configCtrl = new BigBlueButtonConfigurationController(ureq, bwControl); + listenTo(configCtrl); + mainVC.put("segmentCmp", configCtrl.getInitialComponent()); } diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 32fa39213a6d7d87b3ec1c76bc5735188fcb5d21..24741615f4e3310fd40ca5ba251cd9b89bc0c805 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -1268,8 +1268,8 @@ ldap.learningResourceManagerRoleValue= # Build properties ##### application.name=OpenOlat -build.version=15.0.5 -build.identifier=openolat1505-dev +build.version=15.0.6 +build.identifier=openolat1506-dev build.repo.revision=local-devel ##### diff --git a/src/main/webapp/static/movie/player.js b/src/main/webapp/static/movie/player.js index 9ae1913b1cd494d82fb988f684461dcf94f27034..07b922c82938f1715052c11b1ba2f3375ec3ec33 100644 --- a/src/main/webapp/static/movie/player.js +++ b/src/main/webapp/static/movie/player.js @@ -199,7 +199,8 @@ var BPlayer = { var containerWidth = jQuery(parentContainer).width(); var originalWidth = config.width; var originalHeight = config.height; - if(containerWidth < originalWidth) { + // If container width is available and smaller, resize to fit container + if(containerWidth && containerWidth < originalWidth) { var ratio = originalHeight / originalWidth; var tw = containerWidth; var th = ((containerWidth * ratio)|0); @@ -210,7 +211,7 @@ var BPlayer = { jQuery(window).resize(function() { var container = jQuery('#' + domId).parent("p , div"); var cWidth = jQuery(container).width(); - if(cWidth < originalWidth) { + if(cWidth && cWidth < originalWidth) { var ratio = originalHeight / originalWidth; var tw = cWidth; var th = ((cWidth * ratio)|0); diff --git a/src/main/webapp/static/movie/player.min.js b/src/main/webapp/static/movie/player.min.js index 5c90a7e2964dafa734bd5348f440ecd2c4b6c454..2aaf3295c9e988db27e4efdaa438ed7d4216853c 100644 --- a/src/main/webapp/static/movie/player.min.js +++ b/src/main/webapp/static/movie/player.min.js @@ -1 +1 @@ -var BPlayer={insertPlayer:function(l,d,c,m,b,e,j,h,n,a,g,k,f){BPlayer.insertHTML5Player(l,d,c,m,b,e,j,h,n,a,g,k,f)},insertHTML5Player:function(c,g,n,m,e,a,p,t,s,k,o,l,j){var f=c;if(c.indexOf("://")<0&&(c.indexOf("/raw/static/")==0||c.indexOf("/secstatic/qtieditor/")>=0||c.indexOf("/secstatic/qti/")>=0)){f=c}else{if(c.indexOf("://")<0&&((p!="rtmp"&&p!="http")||((p=="rtmp"||p=="http")&&(t==undefined||t.length==0)))){var d=document.location.href;f=d.substring(0,d.lastIndexOf("/"));if(c.indexOf("/")!=0){f+="/"}f+=c}}var b={file:f,width:n,height:m,controlbar:{position:"bottom"}};if(typeof p!="undefined"){b.provider=p}if(p=="rtmp"||p=="http"){b.streamer=t}if(typeof e!="undefined"){var h=BPlayer._convertInSeconds(e);if(h>0){b.start=h}}if(typeof a!="undefined"){var r=BPlayer._convertInSeconds(a);if(r>0){b.duration=r}}if(typeof s!="undefined"&&s){b.autostart=true}if(typeof k!="undefined"&&k){b.repeat="single"}if(typeof o!="undefined"&&!o){b.controlbar="none"}if(typeof l!="undefined"&&l){b.image=l}if(typeof j!="undefined"){b.errorCallback=j}else{b.errorCallback=function(u,w,v){}}if(BPlayer._needJWPlayerFallback(b)){b.flashplayer=BPlayer._jwPlayerBaseUrl()+"movieViewer.swf";var q=function(){jwplayer(g).setup(b)};BPlayer._loadJWPlayer(q)}else{if(p=="nanoo"||f.indexOf("nanoo.tv/")>=0){BPlayer._loadNanooTv(g,b)}else{var q=function(){BPlayer._insertHTML5MediaElementPlayerWorker(g,b)};BPlayer.loadMediaelementJsPlayer(q)}}},loadMediaelementJsPlayer:function(d){var a=BPlayer._mediaElementBaseUrl();var c=a+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");var b=a+(BPlayer.debugEnabled?"mediaelement-and-player.js":"mediaelement-and-player.min.js");if(jQuery("#mediaelementplayercss").length==0){jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",c)}if(typeof jQuery("body").mediaelementplayer!="undefined"){if(d){d()}}else{jQuery.ajax({dataType:"script",cache:true,async:false,url:b}).done(function(){if(d){d()}})}},_loadNanooTv:function(c,b){var a=c+"_frame";for(i=jQuery("#"+a).length;i-->0;){jQuery("#"+a).remove()}if(b.image===undefined||b.image===null||b.image.length==0){BPlayer._loadNanooTvFrame(c,a,b)}else{BPlayer._loadNanooTvPoster(c,a,b)}},_loadNanooTvPoster:function(f,a,b){if(jQuery("#mediaelementplayercss").length==0){var d=BPlayer._mediaElementBaseUrl();var e=d+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",e)}BPlayer._loadNanooResize(f,a,b);var g="<div id='"+a+"' class='mejs__container' role='application' style='width:"+b.width+"px; height:"+b.height+"px; overflow:hidden; overflow-x:hidden; overflow-y:hidden;'><div class='mejs__layers'><div class='mejs__poster mejs__layer' style='background-image: url("+b.image+"); width: 100%; height: 100%;'><img src='"+b.image+"' width='0' height='0'></img></div><div class='mejs__overlay mejs__layer mejs__overlay-play' style='width: 100%; height: 100%; z-index:10;'><div class='mejs__overlay-button' style='z-index:10;' role='button' tabindex='0' aria-label='Play' aria-pressed='false'></div></div></div></div>";var c=jQuery("#"+f);c.append(jQuery(g));c.css("border","none");jQuery("#"+f+" div.mejs__overlay-button").on("click",function(k,j){var h={file:b.file,width:b.width,height:b.height,autostart:true};BPlayer._loadNanooTvFrame(f,a,h)})},_loadNanooTvFrame:function(h,b,d){for(i=jQuery("#"+b).length;i-->0;){jQuery("#"+b).remove()}BPlayer._loadNanooResize(h,b,d);var c=d.file;var g=c.split("?");var a=g[0].substring(c.lastIndexOf("/")+1);if(d.autostart){c="https://www.nanoo.tv/link/w/"+a}else{c="https://www.nanoo.tv/link/n/"+a}var f='<iframe name="'+b+'" id="'+b+'" src="'+c+'" style="width:'+d.width+"px; height:"+d.height+'px; overflow:hidden;" frameborder="0" allow="fullscreen" allowfullscreen="true"></iframe>';var e=jQuery("#"+h);e.append(jQuery(f));e.css("border","none")},_loadNanooResize:function(f,h,d){try{var m=jQuery("#"+f);var a=m.parent("p , div");if(a.length==1&&typeof d.width!=="undefined"&&typeof d.height!=="undefined"){var n=jQuery(a).width();var c=d.width;var g=d.height;if(n<c){var l=g/c;var j=n;var b=((n*l)|0);d.width=j;d.height=b}jQuery(window).resize(function(){var e=jQuery("#"+f).parent("p , div");var p=jQuery(e).width();if(p<c){var q=g/c;var o=p;var r=((p*q)|0);jQuery("#"+h).width(o+"px").height(r+"px")}}).trigger("resize")}}catch(k){if(window.console){console.log(k)}}},_loadJWPlayer:function(a){if(BPlayer._isIE8()&&domId!="prev_container"&&jQuery("#"+domId).is("span")){alert("This is video is not supported on Internet Explorer 8. Sorry for the inconvenience")}else{jQuery.getScript(BPlayer._jwPlayerBaseUrl()+"player.jw.js",function(){if(a){a()}})}},_needJWPlayerFallback:function(a){if(a.provider=="rtmp"){if(a.file.match(/(.*)\/((flv|mp4|mp3):.*)/)){return false}else{return true}}return false},_insertHTML5MediaElementPlayerWorker:function(e,d){var k=BPlayer._mediaElementBaseUrl();var l={loop:d.repeat,pluginPath:k,stretching:"responsive",hls:{path:k+"hls/hls.min.js"},flv:{path:k+"flv/flv.min.js",withCredentials:true},error:d.errorCallback,success:function(o,q,p){if(d.start){p.load();o.addEventListener("canplay",function(){try{o.removeEventListener("canplay");p.setCurrentTime(d.start);p.play();if(!d.autostart){setTimeout(function(){p.pause()},100)}}catch(s){if(window.console){console.log(s)}}})}else{if(d.autostart){try{p.load();p.play()}catch(r){if(window.console){console.log(r)}}}}}};var a=null;var n=d.file.split(".").pop().toLowerCase().split("&").shift();if(d.provider=="sound"){if(n=="mp3"){a="audio/mp3"}else{if(n=="aac"){a="audio/aac"}else{if(n=="m4a"){a="audio/mp4"}}}}else{if(d.provider=="youtube"){a="video/youtube"}else{if(d.provider=="vimeo"){a="video/vimeo"}else{if(d.provider=="rtmp"){l.flashStreamer=d.streamer;a="video/rtmp"}else{if(d.provider=="http"){d.enablePseudoStreaming=true;if(n=="flv"){a="video/flv";l.renderers=["flash_video","native_flv"]}else{a="video/mp4"}}else{if(n=="flv"){a="video/flv";l.renderers=["flash_video","native_flv"]}else{if(n=="f4v"){a="video/flv"}else{if(n=="mp4"){a="video/mp4"}else{if(n=="m4v"){a="video/mp4"}else{if(n=="m3u8"){a="application/x-mpegURL"}else{if(n=="aac"){a="audio/mp4";d.provider="sound"}else{if(n=="mp3"){a="audio/mp3";d.provider="sound"}else{if(n=="m4a"){a="audio/mp4";d.provider="sound"}else{if(d.file.indexOf("vimeo.com")>-1){a="video/vimeo"}else{if(d.file.indexOf("youtube.com")>-1||d.file.indexOf("youtu.be")>-1||d.file.indexOf("youtube.be")>-1){a="video/youtube"}else{if(n.indexOf("mp4?")==0){a="video/mp4"}else{if(d.file.indexOf("openmeetings/recording")>0){a="video/mp4"}else{alert("Something go badly wrong!"+d.provider+" "+n)}}}}}}}}}}}}}}}}}var j;var c=e+"_oo"+Math.floor(Math.random()*1000000)+"vid";var f=e+"_oo"+Math.floor(Math.random()*1000000)+"obj";if(d.provider=="sound"){if(d.height){l.audioHeight=d.height}if(d.width){l.audioWidth=d.width}j="<audio id='"+c+"' controls='controls' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){j+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){j+=" height='"+d.height+"'";b+=" height='"+d.height+"'";l.videoHeight=d.height}if(typeof d.width!="undefined"){j+=" width='"+d.width+"'";b+=" width='"+d.width+"'";l.videoWidth=d.width}if(typeof d.image!="undefined"){j+=" poster='"+d.image+"'"}j+="><source type='"+a+"' src='"+d.file+"'>";var g="mediaelement-flash-video.swf";if(a=="audio/mp3"){g="mediaelement-flash-audio.swf"}else{if(a=="audio/ogg"){g="mediaelement-flash-audio-ogg.swf"}}j+=b+" data='"+k+g+"'>";j+="<param name='movie' value='"+k+g+"' />";j+="<param name='flashvars' value='controls=true&";if(typeof d.streamer!="undefined"){j+="&streamer="+d.streamer}j+="&file="+d.file+"' /></object>";j+="</audio>"}else{j="<video id='"+c+"' controls='controls' preload='none' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){j+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){l.videoHeight=d.height}if(typeof d.width!="undefined"){l.videoWidth=d.width}if(typeof d.image!="undefined"){j+=" poster='"+d.image+"'"}j+="><source type='"+a+"' src='"+d.file+"' />";j+=b+" data='"+k+"mediaelement-flash-video.swf'>";j+="<param name='movie' value='"+k+"mediaelement-flash-video.swf' />";j+="<param name='flashvars' value='controls=true";if(typeof d.streamer!="undefined"){j+="&streamer="+d.streamer}j+="&file="+d.file+"' /></object></video>"}var h=jQuery("#"+e);h.css({height:""});h.css({border:"none"});if(jQuery(window).width()<=d.width){h.css({width:""})}h.html(j);if(a=="video/vimeo"){var k=BPlayer._mediaElementBaseUrl();var m=k+(BPlayer.debugEnabled?"renderers/vimeo.js":"renderers/vimeo.min.js");jQuery.ajax({dataType:"script",cache:true,async:false,url:m}).done(function(){jQuery("#"+c).mediaelementplayer(l)})}else{jQuery("#"+c).mediaelementplayer(l)}},_mediaElementBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/mediaelementjs/";return a},_isIE8:function(){return(jQuery.support.opacity==false)},_jwPlayerBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/jw/";return a},_findBaseUrl:function(a){if(a.o_info){return a.o_info.o_baseURI}else{if(a.opener){return BPlayer._findBaseUrl(a.opener)}else{if(a.parent){return BPlayer._findBaseUrl(a.parent)}else{return null}}}},_convertInSeconds:function(d){if(typeof d=="undefined"||d==null){return 0}if(!d.length){return d}if(d.length==0){return 0}if(d.indexOf(".")>0){d=d.substring(0,d.indexOf("."))}var e=d.lastIndexOf(":");if(e>0){var c=d.substring(e+1,d.length);var a=parseInt(c);d=d.substring(0,e);e=d.lastIndexOf(":");if(e>0){var b=d.substring(e+1,d.length);a+=60*parseInt(b)}d=d.substring(0,e);if(d.length>0){a+=60*60*parseInt(d)}return a}else{return d}},_isOODebug:function(a){if(a.o_info){return a.o_info.debug}else{if(a.opener){return BPlayer._isOODebug(a.opener)}else{if(a.parent){return BPlayer._isOODebug(a.parent)}else{return false}}}}};BPlayer.debugEnabled=BPlayer._isOODebug(window); \ No newline at end of file +var BPlayer={insertPlayer:function(l,d,c,m,b,e,j,h,n,a,g,k,f){BPlayer.insertHTML5Player(l,d,c,m,b,e,j,h,n,a,g,k,f)},insertHTML5Player:function(c,g,n,m,e,a,p,t,s,k,o,l,j){var f=c;if(c.indexOf("://")<0&&(c.indexOf("/raw/static/")==0||c.indexOf("/secstatic/qtieditor/")>=0||c.indexOf("/secstatic/qti/")>=0)){f=c}else{if(c.indexOf("://")<0&&((p!="rtmp"&&p!="http")||((p=="rtmp"||p=="http")&&(t==undefined||t.length==0)))){var d=document.location.href;f=d.substring(0,d.lastIndexOf("/"));if(c.indexOf("/")!=0){f+="/"}f+=c}}var b={file:f,width:n,height:m,controlbar:{position:"bottom"}};if(typeof p!="undefined"){b.provider=p}if(p=="rtmp"||p=="http"){b.streamer=t}if(typeof e!="undefined"){var h=BPlayer._convertInSeconds(e);if(h>0){b.start=h}}if(typeof a!="undefined"){var r=BPlayer._convertInSeconds(a);if(r>0){b.duration=r}}if(typeof s!="undefined"&&s){b.autostart=true}if(typeof k!="undefined"&&k){b.repeat="single"}if(typeof o!="undefined"&&!o){b.controlbar="none"}if(typeof l!="undefined"&&l){b.image=l}if(typeof j!="undefined"){b.errorCallback=j}else{b.errorCallback=function(u,w,v){}}if(BPlayer._needJWPlayerFallback(b)){b.flashplayer=BPlayer._jwPlayerBaseUrl()+"movieViewer.swf";var q=function(){jwplayer(g).setup(b)};BPlayer._loadJWPlayer(q)}else{if(p=="nanoo"||f.indexOf("nanoo.tv/")>=0){BPlayer._loadNanooTv(g,b)}else{var q=function(){BPlayer._insertHTML5MediaElementPlayerWorker(g,b)};BPlayer.loadMediaelementJsPlayer(q)}}},loadMediaelementJsPlayer:function(d){var a=BPlayer._mediaElementBaseUrl();var c=a+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");var b=a+(BPlayer.debugEnabled?"mediaelement-and-player.js":"mediaelement-and-player.min.js");if(jQuery("#mediaelementplayercss").length==0){jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",c)}if(typeof jQuery("body").mediaelementplayer!="undefined"){if(d){d()}}else{jQuery.ajax({dataType:"script",cache:true,async:false,url:b}).done(function(){if(d){d()}})}},_loadNanooTv:function(c,b){var a=c+"_frame";for(i=jQuery("#"+a).length;i-->0;){jQuery("#"+a).remove()}if(b.image===undefined||b.image===null||b.image.length==0){BPlayer._loadNanooTvFrame(c,a,b)}else{BPlayer._loadNanooTvPoster(c,a,b)}},_loadNanooTvPoster:function(f,a,b){if(jQuery("#mediaelementplayercss").length==0){var d=BPlayer._mediaElementBaseUrl();var e=d+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",e)}BPlayer._loadNanooResize(f,a,b);var g="<div id='"+a+"' class='mejs__container' role='application' style='width:"+b.width+"px; height:"+b.height+"px; overflow:hidden; overflow-x:hidden; overflow-y:hidden;'><div class='mejs__layers'><div class='mejs__poster mejs__layer' style='background-image: url("+b.image+"); width: 100%; height: 100%;'><img src='"+b.image+"' width='0' height='0'></img></div><div class='mejs__overlay mejs__layer mejs__overlay-play' style='width: 100%; height: 100%; z-index:10;'><div class='mejs__overlay-button' style='z-index:10;' role='button' tabindex='0' aria-label='Play' aria-pressed='false'></div></div></div></div>";var c=jQuery("#"+f);c.append(jQuery(g));c.css("border","none");jQuery("#"+f+" div.mejs__overlay-button").on("click",function(k,j){var h={file:b.file,width:b.width,height:b.height,autostart:true};BPlayer._loadNanooTvFrame(f,a,h)})},_loadNanooTvFrame:function(h,b,d){for(i=jQuery("#"+b).length;i-->0;){jQuery("#"+b).remove()}BPlayer._loadNanooResize(h,b,d);var c=d.file;var g=c.split("?");var a=g[0].substring(c.lastIndexOf("/")+1);if(d.autostart){c="https://www.nanoo.tv/link/w/"+a}else{c="https://www.nanoo.tv/link/n/"+a}var f='<iframe name="'+b+'" id="'+b+'" src="'+c+'" style="width:'+d.width+"px; height:"+d.height+'px; overflow:hidden;" frameborder="0" allow="fullscreen" allowfullscreen="true"></iframe>';var e=jQuery("#"+h);e.append(jQuery(f));e.css("border","none")},_loadNanooResize:function(f,h,d){try{var m=jQuery("#"+f);var a=m.parent("p , div");if(a.length==1&&typeof d.width!=="undefined"&&typeof d.height!=="undefined"){var n=jQuery(a).width();var c=d.width;var g=d.height;if(n&&n<c){var l=g/c;var j=n;var b=((n*l)|0);d.width=j;d.height=b}jQuery(window).resize(function(){var e=jQuery("#"+f).parent("p , div");var p=jQuery(e).width();if(p&&p<c){var q=g/c;var o=p;var r=((p*q)|0);jQuery("#"+h).width(o+"px").height(r+"px")}}).trigger("resize")}}catch(k){if(window.console){console.log(k)}}},_loadJWPlayer:function(a){if(BPlayer._isIE8()&&domId!="prev_container"&&jQuery("#"+domId).is("span")){alert("This is video is not supported on Internet Explorer 8. Sorry for the inconvenience")}else{jQuery.getScript(BPlayer._jwPlayerBaseUrl()+"player.jw.js",function(){if(a){a()}})}},_needJWPlayerFallback:function(a){if(a.provider=="rtmp"){if(a.file.match(/(.*)\/((flv|mp4|mp3):.*)/)){return false}else{return true}}return false},_insertHTML5MediaElementPlayerWorker:function(e,d){var k=BPlayer._mediaElementBaseUrl();var l={loop:d.repeat,pluginPath:k,stretching:"responsive",hls:{path:k+"hls/hls.min.js"},flv:{path:k+"flv/flv.min.js",withCredentials:true},error:d.errorCallback,success:function(o,q,p){if(d.start){p.load();o.addEventListener("canplay",function(){try{o.removeEventListener("canplay");p.setCurrentTime(d.start);p.play();if(!d.autostart){setTimeout(function(){p.pause()},100)}}catch(s){if(window.console){console.log(s)}}})}else{if(d.autostart){try{p.load();p.play()}catch(r){if(window.console){console.log(r)}}}}}};var a=null;var n=d.file.split(".").pop().toLowerCase().split("&").shift();if(d.provider=="sound"){if(n=="mp3"){a="audio/mp3"}else{if(n=="aac"){a="audio/aac"}else{if(n=="m4a"){a="audio/mp4"}}}}else{if(d.provider=="youtube"){a="video/youtube"}else{if(d.provider=="vimeo"){a="video/vimeo"}else{if(d.provider=="rtmp"){l.flashStreamer=d.streamer;a="video/rtmp"}else{if(d.provider=="http"){d.enablePseudoStreaming=true;if(n=="flv"){a="video/flv";l.renderers=["flash_video","native_flv"]}else{a="video/mp4"}}else{if(n=="flv"){a="video/flv";l.renderers=["flash_video","native_flv"]}else{if(n=="f4v"){a="video/flv"}else{if(n=="mp4"){a="video/mp4"}else{if(n=="m4v"){a="video/mp4"}else{if(n=="m3u8"){a="application/x-mpegURL"}else{if(n=="aac"){a="audio/mp4";d.provider="sound"}else{if(n=="mp3"){a="audio/mp3";d.provider="sound"}else{if(n=="m4a"){a="audio/mp4";d.provider="sound"}else{if(d.file.indexOf("vimeo.com")>-1){a="video/vimeo"}else{if(d.file.indexOf("youtube.com")>-1||d.file.indexOf("youtu.be")>-1||d.file.indexOf("youtube.be")>-1){a="video/youtube"}else{if(n.indexOf("mp4?")==0){a="video/mp4"}else{if(d.file.indexOf("openmeetings/recording")>0){a="video/mp4"}else{alert("Something go badly wrong!"+d.provider+" "+n)}}}}}}}}}}}}}}}}}var j;var c=e+"_oo"+Math.floor(Math.random()*1000000)+"vid";var f=e+"_oo"+Math.floor(Math.random()*1000000)+"obj";if(d.provider=="sound"){if(d.height){l.audioHeight=d.height}if(d.width){l.audioWidth=d.width}j="<audio id='"+c+"' controls='controls' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){j+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){j+=" height='"+d.height+"'";b+=" height='"+d.height+"'";l.videoHeight=d.height}if(typeof d.width!="undefined"){j+=" width='"+d.width+"'";b+=" width='"+d.width+"'";l.videoWidth=d.width}if(typeof d.image!="undefined"){j+=" poster='"+d.image+"'"}j+="><source type='"+a+"' src='"+d.file+"'>";var g="mediaelement-flash-video.swf";if(a=="audio/mp3"){g="mediaelement-flash-audio.swf"}else{if(a=="audio/ogg"){g="mediaelement-flash-audio-ogg.swf"}}j+=b+" data='"+k+g+"'>";j+="<param name='movie' value='"+k+g+"' />";j+="<param name='flashvars' value='controls=true&";if(typeof d.streamer!="undefined"){j+="&streamer="+d.streamer}j+="&file="+d.file+"' /></object>";j+="</audio>"}else{j="<video id='"+c+"' controls='controls' preload='none' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){j+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){l.videoHeight=d.height}if(typeof d.width!="undefined"){l.videoWidth=d.width}if(typeof d.image!="undefined"){j+=" poster='"+d.image+"'"}j+="><source type='"+a+"' src='"+d.file+"' />";j+=b+" data='"+k+"mediaelement-flash-video.swf'>";j+="<param name='movie' value='"+k+"mediaelement-flash-video.swf' />";j+="<param name='flashvars' value='controls=true";if(typeof d.streamer!="undefined"){j+="&streamer="+d.streamer}j+="&file="+d.file+"' /></object></video>"}var h=jQuery("#"+e);h.css({height:""});h.css({border:"none"});if(jQuery(window).width()<=d.width){h.css({width:""})}h.html(j);if(a=="video/vimeo"){var k=BPlayer._mediaElementBaseUrl();var m=k+(BPlayer.debugEnabled?"renderers/vimeo.js":"renderers/vimeo.min.js");jQuery.ajax({dataType:"script",cache:true,async:false,url:m}).done(function(){jQuery("#"+c).mediaelementplayer(l)})}else{jQuery("#"+c).mediaelementplayer(l)}},_mediaElementBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/mediaelementjs/";return a},_isIE8:function(){return(jQuery.support.opacity==false)},_jwPlayerBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/jw/";return a},_findBaseUrl:function(a){if(a.o_info){return a.o_info.o_baseURI}else{if(a.opener){return BPlayer._findBaseUrl(a.opener)}else{if(a.parent){return BPlayer._findBaseUrl(a.parent)}else{return null}}}},_convertInSeconds:function(d){if(typeof d=="undefined"||d==null){return 0}if(!d.length){return d}if(d.length==0){return 0}if(d.indexOf(".")>0){d=d.substring(0,d.indexOf("."))}var e=d.lastIndexOf(":");if(e>0){var c=d.substring(e+1,d.length);var a=parseInt(c);d=d.substring(0,e);e=d.lastIndexOf(":");if(e>0){var b=d.substring(e+1,d.length);a+=60*parseInt(b)}d=d.substring(0,e);if(d.length>0){a+=60*60*parseInt(d)}return a}else{return d}},_isOODebug:function(a){if(a.o_info){return a.o_info.debug}else{if(a.opener){return BPlayer._isOODebug(a.opener)}else{if(a.parent){return BPlayer._isOODebug(a.parent)}else{return false}}}}};BPlayer.debugEnabled=BPlayer._isOODebug(window); \ No newline at end of file diff --git a/src/test/java/org/olat/selenium/page/user/UserProfilePage.java b/src/test/java/org/olat/selenium/page/user/UserProfilePage.java index d40714a8a1a6cb20a7fee7923791eef4ed01b608..b2f31b4059f843f4902efb12e4a72956c80c55a5 100644 --- a/src/test/java/org/olat/selenium/page/user/UserProfilePage.java +++ b/src/test/java/org/olat/selenium/page/user/UserProfilePage.java @@ -46,7 +46,12 @@ public class UserProfilePage { */ public UserProfilePage assertOnProfile() { By profileSegmentBy = By.cssSelector("div.o_segments a.btn.o_sel_usersettings_profile"); - OOGraphene.waitElement(profileSegmentBy, 5, browser); + try { + OOGraphene.waitElement(profileSegmentBy, browser); + } catch (Exception e) { + OOGraphene.takeScreenshot("Assertonprofile", browser); + throw e; + } WebElement profileSegmentEl = browser.findElement(profileSegmentBy); Assert.assertTrue(profileSegmentEl.isDisplayed()); return this;