Skip to content

Conversation

@abrichr
Copy link
Member

@abrichr abrichr commented Jun 13, 2024

What kind of change does this PR introduce?
This PR implements the chrome extension to write DOM and DOM events to the database.

Summary
Motivation: Related Issue: #51

Checklist

  • My code follows the style guidelines of OpenAdapt
  • I have performed a self-review of my code
  • If applicable, I have added tests to prove my fix is functional/effective
  • I have linted my code locally prior to submission
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (e.g. README.md, requirements.txt)
  • New and existing unit tests pass locally with my changes
  • How can your code be run and tested? -> Add Chrome browser event in database during recording #744 (comment)

Other information
Supercedes #364

Copy link
Member Author

@abrichr abrichr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @KrishPatel13 ! I left a few comments, happy to chat about any of it if you like.

If you could show some console output and/or screenshots in the PR description that would be very much appreciated!

@KrishPatel13
Copy link
Collaborator

KrishPatel13 commented Jun 16, 2024

An update for Chrome Extension Issue:

After spending about 4-5 hours debugging nativeMessaging, I was not able to fix the issue. I dropped the idea of using nativeMessaging. Reasons:

  • Setup is complex, and it is different for all types of Os.
  • APIs and example are about 6-7 years old and no debugging features with it, which prevent to make progress.
  • Very less resources to find help about nativeMessaging.

Hence, After an hour of research, I recalled that I had used WebSockets in my assignment in CSC309 to communicate between an web server and my java running process. The task there was that whenever the user click submit I had to sent that api request to my java running client and then, connect to db and save some info about the user (registering).

I thought this might relevant for the task that we are working on too.

Hence, I quickly made a web_socket_extension example to demo this idea for constant communication between extension and a desktop running process (in our case a .py file). I made a dumpy record.py that just listening for incoming messages fromt the websocket and prints them.

Commit for the Web Socket "Ping" Example: https://github.com/OpenAdaptAI/OpenAdapt/pull/744/commits/9c749caef0f0ba9f6e8b79fd57d00309b822d114

Some Screenshots for the output:
image

@KrishPatel13
Copy link
Collaborator

My next step would be to log the dom changes instead of "ping" message.

@KrishPatel13
Copy link
Collaborator

KrishPatel13 commented Jun 16, 2024

My goal is to at least, make a prototype by tonight:

record.py (dummy): that runs and save all the dom changes in a sqlite db and once this is done, I will then manipulate the actual record.py next week so that it records the dom changes in our actual db. (our main goal). I hope this sounds like a good plan to tackle this issue :-)

@KrishPatel13
Copy link
Collaborator

KrishPatel13 commented Jun 16, 2024

Update: Now I am able to log DOM changes
image

Commit: d9f9792

@KrishPatel13
Copy link
Collaborator

Now, I can save all the DOM messages sent by the extension into a db synchronously.

Commit: 1b606fb

Some Screenshots for the work:

image

and

image

This commit proves a working prototype for the chrome extension issue.

Now my next steps shall be to integrate this into our actual application.

@KrishPatel13 KrishPatel13 force-pushed the feat/chrome-extension branch from 04d4658 to 1b606fb Compare June 16, 2024 22:53
@abrichr abrichr marked this pull request as draft June 16, 2024 22:56
@KrishPatel13
Copy link
Collaborator

KrishPatel13 commented Jul 28, 2024

Also, we want to update visualize.py and the dashboard to display these events. (#744 (comment))

FIxed Visualization here: b3d54eb

I just ran visualize on a browser_event record recording. Here are some screenshots to support:

image,

image

@abrichr abrichr force-pushed the feat/chrome-extension branch from 8a20800 to c3d1275 Compare September 4, 2024 06:30
@abrichr abrichr force-pushed the feat/chrome-extension branch from c3d1275 to 925db61 Compare September 4, 2024 14:04
@abrichr abrichr merged commit 49d71d1 into main Sep 11, 2024
@abrichr abrichr deleted the feat/chrome-extension branch September 11, 2024 02:31
Star-DreamDev added a commit to Star-DreamDev/OpenAdapt that referenced this pull request Dec 25, 2025
…#744)

* add old chrome extension files

* add old changes back, related to chrome extension, in openadapt dir

* try web socket solution, add asyncio and websockets libraries to poetry

* now we can log the dom changes ina a desctop running python process

* remove the old nativeMessaging extension code

* rename dir

* save the dom chages into dummy db: chrome.db

* fix actions tests

* ran `poetry run black --preview . --exclude 'alembic'`

* remove sockets.py

* fix falke8 formatting issues

* ran `poetry run black --preview . --exclude 'alembic'`

* add browser event code

* chrome extension work wip

* fix reset_db python file.

* now, extension messages can be seen in logs when the recording is started.

* till trying to fix the issue: record functione execution gets stuck at read_browser_events due to asyncio.runForever

* browser_events can be seen in db

* ran black and flake8

* add documentation in extension side js files and remove unused files

* OpenAdaptAI/OpenAdapt#744 (review)

Update readme.md

* OpenAdaptAI/OpenAdapt#744 (comment)
remove mlds logo

* OpenAdaptAI/OpenAdapt#744 (comment)

add todo

* OpenAdaptAI/OpenAdapt#744 (comment)

add NAMED_CONSTANT

* OpenAdaptAI/OpenAdapt#744 (comment)

remove unused lines in content.js

* OpenAdaptAI/OpenAdapt#744 (comment)

uncomment for `alembic upgrade`

* OpenAdaptAI/OpenAdapt#744 (comment)

resolve this

* OpenAdaptAI/OpenAdapt#744 (comment)

remove unwanted obfuscate keys

* OpenAdaptAI/OpenAdapt#744 (comment)

used joinedload

* OpenAdaptAI/OpenAdapt#744 (comment)

remove unwanted return

* OpenAdaptAI/OpenAdapt#744 (comment)

Ran the following:
- `alembic revision --autogenerate -m "regenrate with browser_event table"`
- `alembic upgrade head`

* OpenAdaptAI/OpenAdapt#744 (comment)

remove unwanted commetns lines

* OpenAdaptAI/OpenAdapt#744 (comment)

remove commented lines

* https://github.com/OpenAdaptAI/OpenAdapt/pull/744/files#r1668802201

added this todo

* OpenAdaptAI/OpenAdapt#744 (comment)

optimize browser events record  by adding an option to include to record or not like audio

* OpenAdaptAI/OpenAdapt#744 (comment)

move constants to config

* OpenAdaptAI/OpenAdapt#744 (comment)

update readme

* update readme again

* OpenAdaptAI/OpenAdapt#744 (comment)

update config default for RECORD_BROWSER_EVENTS

* OpenAdaptAI/OpenAdapt#744 (comment)

removed unessary comment in events.py

* Update openadapt/models.py

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* OpenAdaptAI/OpenAdapt#744 (comment)

resolve d

* https://github.com/OpenAdaptAI/OpenAdapt/pull/744/files/3836c3d165bb11c5615c83a0df65f6cdc155f93f#r1676068390

resolved

* ran black on openadapt dir
`poetry run black --preview openadapt/`

* OpenAdaptAI/OpenAdapt#744 (comment)

fixed faiing tests

* update the form type script

* add the record browser flag in classification group

* OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Update openadapt/config.py: OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Update openadapt/record.py

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Update openadapt/config.py: https://github.com/OpenAdaptAI/OpenAdapt/pull/744/files/aa7b1ae7df8fb7045abb5d71d1d41a09f2d8bea2#r1691430453

https://github.com/OpenAdaptAI/OpenAdapt/pull/744/files/aa7b1ae7df8fb7045abb5d71d1d41a09f2d8bea2#r1691430453

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Remove 3 unused functions owing to:

OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

* Update openadapt/record.py: OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Rename owing to: OpenAdaptAI/OpenAdapt#744 (comment)

* Rename const: OpenAdaptAI/OpenAdapt#744 (comment)

* Remove unused: OpenAdaptAI/OpenAdapt#744 (comment)

* Use ClassVar again: OpenAdaptAI/OpenAdapt#744 (comment)

* Update openadapt/models.py: OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Update openadapt/record.py: OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Update openadapt/record.py: OpenAdaptAI/OpenAdapt#744 (comment)

OpenAdaptAI/OpenAdapt#744 (comment)

Co-authored-by: Richard Abrich <richard.abrich@mldsai.com>

* Move string to const: OpenAdaptAI/OpenAdapt#744 (comment)

* Correct Grammatical errors: OpenAdaptAI/OpenAdapt#744 (comment)

* fix visualize and reformat

* fix alembic migrations

* Intersection/MutationObserver; _repr_ignore_attrs; fix process_events

* synchronize timestamps

* attachWindowEventListeners

* recreate alembic migration

* sync; buffer

* add dtw.py (wip)

* remove sorting and syncing; working experiments/dtw.py

* fix content.js

* report screenX/screenY; fix getScreenCoordinates; compute coordinate differences

* wip

* remove observers; composite distance; task_by_name

* replace eventBuffer with coordMappings; compute tlbr-screen in browser.py

* assign_browser_events in events.py

* black; docstrings

* flake8

* update test

* black

* add test_browser.py

---------

Co-authored-by: pate1595 <kmp.patel@utoronto.ca>
Co-authored-by: Krish Patel <65433817+KrishPatel13@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants