Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ReadSpeaker DocReader in SEB 3.7 #889

Open
Mobron opened this issue May 24, 2024 · 35 comments
Open

ReadSpeaker DocReader in SEB 3.7 #889

Mobron opened this issue May 24, 2024 · 35 comments
Assignees
Labels
being investigated This issue is being investigated. information required This issue lacks information or requires feedback.

Comments

@Mobron
Copy link

Mobron commented May 24, 2024

Describe the Bug
Recently, we encountered an issue with DocReader bt ReadSpeaker in Safe Exam Browser (SEB) version 3.7. When attempting to open a file, it gets stuck while trying to read it out loud (see image attached to this message). Interestingly, this problem does not exist in version 3.6 and earlier.

Our Moodle provider, OpenEdu, as well as ReadSpeaker support have confirmed the issue after conducting their analysis. They recommended that I file this bug for further assistance.

Steps to Reproduce
Steps to reproduce the behavior:

  1. Create Quiz with SEB in Moodle with ReadSpeaker plugin
  2. Create Question with link to uploaden PDF file
  3. Open Quiz in SEB
  4. Open PDF with ReadSpeaker/DocReader
  5. Click 'Read' button on top
  6. See error

Expected Behavior
Up untill version 3.6 ReadSpeaker DocReader would read the text aloud.

Screenshots
IMG_20240517_160645

Version Information

  • Windows 11 (any version)
  • SEB-Version 3.7

Additional Context
ReadSpeaker is an important accessibility tool in the online world. Support seems critical. They asked me to file this bug report, but they can be reached at [email protected]. Lisa knows the issue and can provide further assistance.

@dbuechel
Copy link
Member

We'd need access to a quiz with that specific plugin, I personally do not know it nor how to install / configure it. In other words, it would be great if you could take care of steps 1 and 2 as specified abvoe so that we can investigate the remaining steps.

@dbuechel dbuechel added the information required This issue lacks information or requires feedback. label May 27, 2024
@Mobron
Copy link
Author

Mobron commented May 28, 2024

Thank you for your reply, Damian. I've created an account for you on our Moodle instance, with access to a simple Quiz. The Quiz contains one question, linking to a PDF file.

Go to elo.keizerkarelcollege.nl
Click 'Inloggen' and then 'Reguliere login'
Log in with username: Damian
Password: SEB4ever
Here is the example test you can use..
Open the test in SEB 3.7 with password 'Doei' (exit password is the same)
Click on the ReadSpeaker icon behind the link in the question to open the PDF in DocReader.
DockReader opens the PDF, but will fail to read it.

NB: SEB 3.6 and earlier will work just fine.

Kind regards,
Robin

@dbuechel
Copy link
Member

Excellent, thank you. I shall investigate the issue as soon as I have time, presumably in the upcoming 1-2 weeks.

@dbuechel dbuechel added being investigated This issue is being investigated. and removed information required This issue lacks information or requires feedback. labels May 29, 2024
@Mobron
Copy link
Author

Mobron commented Jun 5, 2024

Very good. Thank you. We and all our dyslectic students will keep our fingers crossed for a solution

@ObscureScience
Copy link

Hi @dbuechel
I work with ReadSpeaker and am interested if any findings has been made.
If changes in CSP configuration of SEB has been made that could be something to look at.
As this is a open source project, are there instruction on how to enable a debug build, which will make inspector tools available?

@thomasvergouwe
Copy link

Following this thread, as we have the exact same issue in our schools.

@dbuechel
Copy link
Member

As this is a open source project, are there instruction on how to enable a debug build, which will make inspector tools available?

You can enable the development tools via the configuration under User Interface > Enable browser toolbar > Show developer tools (see https://safeexambrowser.org/windows/win_usermanual_en.html#AppearancePane).

@ObscureScience
Copy link

ObscureScience commented Jun 19, 2024

@dbuechel
Thank you! What we've been able to see is that some responses from ReadSpeaker servers are blocked by the browser because the browser sets CORS credentials mode "include" on fetches, and ReadSpeaker has "Access-Control-Allow-Origin" set to "*" on responses.

The error is basically this: "Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'"

IMG_9311

This must have changed between v3.6 and 3.7.
My recommendation would be to at least allow the header parameter to be set (including "omit").

@dbuechel
Copy link
Member

Thanks for the information, that might very well be the case due to a change in the browser engine. I shall thus try to set the credentials mode as mentioned above, though we obviously need to make sure that this won't impact other requests resp. use cases.

@dbuechel dbuechel added the enhancement This issue proposes an enhancement of the software. label Jun 20, 2024
@Dirk-K-076
Copy link

Good morning @dbuechel
Are there any relevant updates for this issue with SEB 3.7.0? Or can you maybey confirm this issue is going to be fixed with a new browser engine in SEB 3.8 or later? Thanks in advance also on behalve of our students

@dbuechel
Copy link
Member

dbuechel commented Jul 22, 2024

We will definitely have a look at it and do already have an internal work item created. It currently is scheduled for version 3.8.0, but most unfortunately and due to various factors we'll probably need to reschedule it for a later version.

The code change itself may be and hopefully is minor, but the possible side effects and required testing unfortunately not. We already had quite a few issues related to CORS, thus experiences has taught that any related changes must be made with great caution.

@thomasvergouwe
Copy link

Is there an update on this problem? We start schools again in september and we'd like to use Readspeaker Docreader in combination with SEB.

@dbuechel
Copy link
Member

Most unfortunately not, we were not able to have a look at the issue due to other priorities. The issue is however still in our backlog and we will inform here once we were able to make any changes.

@dbuechel dbuechel removed the being investigated This issue is being investigated. label Aug 23, 2024
@Mobron
Copy link
Author

Mobron commented Aug 26, 2024

For anyone tuning in. I can confirm that version 3.6 still works for now. The problem is however, that in my experience older versions will eventually stop working as automated SEB config creators (such as Moodle's) get updated.

@Dirk-K-076
Copy link

Hi @dbuechel
We see a new release at the SEB website for SEB 3.8. Is the docreader issue solved in this release? Thanks in advance!

@thomasvergouwe
Copy link

thomasvergouwe commented Oct 7, 2024 via email

@dbuechel
Copy link
Member

dbuechel commented Oct 9, 2024

Unfortunately not, but the issue remains in our backlog and will be tackled once time and other priorities permit.

@Mobron
Copy link
Author

Mobron commented Nov 3, 2024

Update: We've had an enormous amount of problems using SEB version 3.6 during our last exam-week. We've seen crashes and red-screens all over the place. Apparently these were caused by a known issue that was solved in version 3.8. We've then updated our non-dyslectic students to this version and most problems were gone.

This means, however, that staying with SEB 3.6 is no longer a viable option. Not even for the smaller group of students that rely on ReadSpeaker as their accessibility tool. It's just become too unstable. Could you, therefore, be so kind as to move the issue up the list of priorities?

@dbuechel
Copy link
Member

dbuechel commented Nov 4, 2024

Update: We've had an enormous amount of problems using SEB version 3.6 during our last exam-week. We've seen crashes and red-screens all over the place. Apparently these were caused by a known issue that was solved in version 3.8. We've then updated our non-dyslectic students to this version and most problems were gone.

That is unfortunately correct, hence we do always recommend to use the latest release version (and here particularly at least version 3.7.1 or newer).

Could you, therefore, be so kind as to move the issue up the list of priorities?

I unfortunately cannot do this, as the prioritization is done by our product owner board (of which I am not a part of). I will however forward the urgency of this issue, but I'm afraid the backlog of version 3.9.0 is already full so any resolution won't be available before the second half of 2025.

Becoming a member of the SEB Alliance could potentially speed up things on our end, please refer to https://safeexambrowser.org/alliance/members.html for more information.

@dbuechel
Copy link
Member

dbuechel commented Nov 4, 2024

To all involved: Have you contacted the manufacturer of ReadSpeaker and made sure that the issue cannot be resolved on their end, perhaps even faster than we could do so?

To reiterate, changes to the CORS headers can have a wide range of unintended effects, which is why this would be a major change for us requiring extensive testing to ensure that other use cases are not affected.

@calsil
Copy link

calsil commented Dec 3, 2024

To all involved: Have you contacted the manufacturer of ReadSpeaker and made sure that the issue cannot be resolved on their end, perhaps even faster than we could do so?

@dbuechel do you have any suggestion of how this could be done?
The product is in no way specific for use in SEB. Not having Access-Control-Allow-Origin: * set would not really be a possibility as the product needs to be possible to load from any domain.

EDIT: To clarify, docReader loads correctly, but it's the request to the audio synthesis endpoint which is used in many products other than docReader, and is a "public" API, so * is the most reasonable value for allowed origins.

In the "competitor" Respondus Lockdown browser docReader does work without issues.

@JarnoNL
Copy link

JarnoNL commented Dec 3, 2024

To all involved: Have you contacted the manufacturer of ReadSpeaker and made sure that the issue cannot be resolved on their end, perhaps even faster than we could do so?

To reiterate, changes to the CORS headers can have a wide range of unintended effects, which is why this would be a major change for us requiring extensive testing to ensure that other use cases are not affected.

Hi DBeuchel,
Yes, all Github-ers in this topic have contacted us here at ReadSpeaker. ReadSpeaker's lead developer even left a suggestion for the solution, as posted by ObscureScience on June 17th.

Do you happen to know if there is any way we at ReadSpeaker can get in touch with SEB's Product Owner Board? I cannot find any such information on the SEB ewebsite.
This ongoing issue is now unnecessarily effecting numerous dyslexic learners (as this is most probably also negatively impacting the learning / exam experiencing for SEB Alliance Contributors like Skolverket and Dugga, who also use ReadSpeaker TTS), and it is most probably not the SEB Alliance's intention to create inaccessible yet secure exams for these student/pupils/kids?

Hoping you can help point us in the right direction to initiate dialogue between us/ReadSpeaker and SEB's Product Owner Board, thanks!

@dbuechel
Copy link
Member

dbuechel commented Dec 5, 2024

Thanks for the additional information @calsil. I unfortunately do not have any suggestions and am still busy with other priorities, but I invested some extra time in order to get to the root of the issue: According to my current understanding, the issue appears to be that when fetching a resource using fetch(), the credentials option of the provided RequestInit object is set to include instead of omit or same-origin.

Now, we definitely haven't changed anything related to the above mentioned API (as a matter of fact, we currently do not alter any browser APIs at all). The issue must thus be either caused by the web application code actually performing the resource fetch (which I consider to be the most likely case) or then by an upstream change in either the C# wrapper of the browser engine (CefSharp) or the engine itself (CEF).

Hence, and please correct me if I'm wrong, we cannot resolve the issue, as we'd actually need to hard-code the credentials option to omit or same-origin, which in turn would most certainly break other use cases. And even if it were a viable option, I am not aware that there exists a possibility for us to do so, as the browser APIs are part of the engine code and not our code base.

@dbuechel
Copy link
Member

dbuechel commented Dec 5, 2024

@JarnoNL Thanks for the input, and I most definitely agree, this issue should be resolved as soon as possible. Our project leader @danschlet is part of the product owner board and may be able to help here.

@dbuechel dbuechel added being investigated This issue is being investigated. information required This issue lacks information or requires feedback. and removed enhancement This issue proposes an enhancement of the software. labels Dec 5, 2024
@danschlet
Copy link
Member

danschlet commented Dec 6, 2024

@JarnoNL you can contact us by email info at safeexambrowser . org or contact the SEB Alliance manager at alliance safeexambrowser . org.

In general I agree with @dbuechel that changes to the browser engine seem very risky and we can't really prioritize those, if this is only reported for one specific web application/solution. To me it seems that Google changed these CORS policies probably for security reasons in the Chromium browser engine or that some related bug was introduced in a specific version of Chromium / Chromium Embed Framework (CEF). In both cases, someone should try to find similar issues related to CEF/Cef Sharp or Chromium/Chrome.

We are no browser engine or web application specialists, therefore researching such issues could cost us significant amounts of time and there is the risk that we anyways can't do anything else than filing a bug report to Google / Chromium / CEF. So if your developers could do further research if this is a known issue for new releases of Chromium, this might help finding a solution faster.

@calsil
Copy link

calsil commented Dec 9, 2024

Thanks for the additional information @calsil. I unfortunately do not have any suggestions and am still busy with other priorities, but I invested some extra time in order to get to the root of the issue: According to my current understanding, the issue appears to be that when fetching a resource using fetch(), the credentials option of the provided RequestInit object is set to include instead of omit or same-origin.

Now, we definitely haven't changed anything related to the above mentioned API (as a matter of fact, we currently do not alter any browser APIs at all). The issue must thus be either caused by the web application code actually performing the resource fetch (which I consider to be the most likely case) or then by an upstream change in either the C# wrapper of the browser engine (CefSharp) or the engine itself (CEF).

Hence, and please correct me if I'm wrong, we cannot resolve the issue, as we'd actually need to hard-code the credentials option to omit or same-origin, which in turn would most certainly break other use cases. And even if it were a viable option, I am not aware that there exists a possibility for us to do so, as the browser APIs are part of the engine code and not our code base.

Thank you for this deeper look!

Just to make sure there are no confusions here, no regular browser exhibits this behavior with the docReader app (Chrome/Edge, Firefox, Safari) and neither does Respondus LockDown Browser. So it's not the normal behavior of these engines, and must be down to special configuration or redefinition of the fetch/XMLHttpRequest API.

I'm suspecting the CefSharp in that case. I assume this version is vendored in this project, and are you thus able to determine the CefSharp version change between SEB 3.6 and 3.7?

@dbuechel
Copy link
Member

dbuechel commented Dec 11, 2024

@calsil That is very well possible. The engine version information is available in the release notes of every version here on GitHub, see https://github.com/SafeExamBrowser/seb-win-refactoring/releases.

There exist a CEF sample application as well as a CefSharp minimal example application, you may want to try reproducing the behavior with both in order to verify whether this indeed is an upstream issue:

Copy link

github-actions bot commented Jan 9, 2025

This issue is stale because it has been open for 28 days with no activity. It will soon be closed automatically if there are no updates.

@github-actions github-actions bot added the stale This issue had no recent activity and will thus soon be closed. label Jan 9, 2025
@Mobron
Copy link
Author

Mobron commented Jan 9, 2025

Stale..... I really hope this issue can stay active until it's resolved. We need versions of SEB and/or DocReader that can be friends, for the benefit of our poor dyslectic of visually impaired students.

@Dirk-K-076
Copy link

Hi, at our high school we also keep hitting this issue with as a result that we are still running version 3.5.0. It would be a pitty if this issue is getting closed, because there is not a resolvement.

I saw the suggestion earlier mentioned by @dbuechel on november 4th, to report this issue to the readspeaker support staff. Has aynone already been in the opportunity to do this? If not so we can maybe try to report the issue to them. There is a small challenge in this because my team and me are only managing the software functioanlly i would love to have some advice of what to report to them exactly as well with the technical details.

Hopefully whe can get to a quick solution together?

@thomasvergouwe
Copy link

@Dirk-K-076 calsil and JarnoNL are 2 people that work with readspeaker. I've been in contact with them because this has caused immense issues for our 7 high schools.

I have no idea how this can be resolved, but it's becoming quite rediculous...

@Dirk-K-076
Copy link

Thanks for your quick response @thomasvergouwe ;

If i read the article top-down it looks like the root cause is clear. So is readspeaker currently investigating this issue, and is there already a plannen date for implementing a fix?

I know the issue is going on for months, but i'm just trying no to see or investigate who is responsible to take action now. And if we can help we would love to! Otherwise we are very interested in following this issue...

@github-actions github-actions bot removed the stale This issue had no recent activity and will thus soon be closed. label Jan 10, 2025
@Dirk-K-076
Copy link

Dirk-K-076 commented Jan 13, 2025

Anyone with a update please, or anyone who can help what exactly to ask to the technical support staff from readspeaker?

@danschlet
Copy link
Member

From the SEB side, we won't be able to investigate this issue earlier than February.

@calsil
Copy link

calsil commented Jan 14, 2025

One additional point of information.
The problem was not exhibited by the actual CEF engine: https://cef-builds.spotifycdn.com/index.html
So the modification of the fetch mechanism must be done by either CefSharp or SafeExamBrowser.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
being investigated This issue is being investigated. information required This issue lacks information or requires feedback.
Projects
None yet
Development

No branches or pull requests

8 participants