Skip to content

Commit 8a9b268

Browse files
committed
test
1 parent bd9d068 commit 8a9b268

File tree

11 files changed

+164
-8
lines changed

11 files changed

+164
-8
lines changed

README.md

Lines changed: 134 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,141 @@
11
# Purpose
22

3+
EyeNav is a modular web interaction framework. It fuses real-time eye-tracking (with Tobii-Pro SDK) and on-device natural-language processing (using Vosk) within a Chrome extension and Python backend to deliver:
34

5+
* **Accessible input** for users with motor impairments
6+
* **Hands-free browser control** for developers and general users
7+
* **Automated test generation** via record-and-replay (Gherkin + WebdriverIO)
8+
9+
By orchestrating gaze-driven pointer control, voice-command parsing, and concurrent logging threads, EyeNav enables both interactive accessibility and behavior-driven development in web environments.
10+
11+
---
412

513
# Video
614

7-
<!-- <p align="center">
8-
<iframe width="500" height="282" src="https://www.youtube.com/embed/p-ll9PlT0MY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p> -->
15+
<p align="center">
16+
<iframe width="560" height="315" src="https://youtu.be/INSERT_VIDEO_ID" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
17+
</p>
18+
19+
---
20+
# Screenshots
21+
22+
![EyeNav in action in english. A screenshot of a web browser with description of voice commands to the right.](assets/imgs/ss-2.png)
23+
![EyeNav in action in spanish. A screenshot of a web browser with description of voice commands to the right.](assets/imgs/ss-1.png)
24+
25+
---
26+
# Hardware and Software Requirements
27+
28+
![Tobii Pro Nano Eyetracker](assets/imgs/tobii-pro-nano.png)
29+
* A Tobii eyetracker
30+
* A microphone
31+
* Google Chrome (v114+)
32+
* Python
33+
---
34+
35+
# Summary
36+
37+
EyeNav implements the following core features:
38+
39+
* **Gaze-Driven Pointer Control**: Maps eye gaze to cursor movements using the Tobii Pro Nano and the `tobii-research` SDK.
40+
* **NLP Command Parsing**: Transcribes and interprets voice commands (click, input, scroll, navigate) with Vosk running locally.
41+
* **Record-and-Replay Test Generation**: Logs interactions in Gherkin syntax and replays them via Kraken & WebdriverIO.
42+
* **Modularity**: Enable or disable any of the three subsystems (gaze, voice, test logger) independently.
43+
* **Internationalization**: Supports English and Spanish out of the box; additional languages via voice-model download and locale translation.
44+
45+
---
46+
47+
## Installation
48+
49+
1. **Clone the Repository**
50+
51+
```bash
52+
git clone https://github.com/your-org/EyeNav.git
53+
cd EyeNav
54+
```
55+
2. **Backend Setup**
56+
57+
```bash
58+
python3 -m venv venv
59+
source venv/bin/activate
60+
pip install -r requirements.txt
61+
```
62+
3. **Chrome Extension**
63+
64+
* Open `chrome://extensions/` in Chrome (v114+)
65+
* Enable *Developer mode*
66+
* Click *Load unpacked* and select `extension/`
67+
68+
---
69+
70+
# Usage
71+
72+
1. **Start Backend**
73+
74+
```bash
75+
python backend/main.py
76+
```
77+
2. **Load Web Page & Extension**
78+
79+
* Navigate to any web page
80+
* Click the EyeNav extension icon to open the side panel
81+
82+
3. **Initiate Session**
83+
84+
* Click **Start** in the side panel
85+
* Experiment with gaze, voice commands, or both
86+
87+
88+
4. **Generate Tests**
89+
90+
* Interactions are logged automatically
91+
* Generated Gherkin scripts appear in `tests/` directory
92+
* Replay with [Kraken](https://thesoftwaredesignlab.github.io/Kraken/)
93+
94+
---
95+
96+
# Configuration
97+
98+
## Voice Model & Language
99+
100+
* Default support for English (`en`) and Spanish (`es`) models is provided. To download more models, change the preferred language on Chrome.
101+
* To check for supported languages, see the official [vosk documentation](https://alphacephei.com/vosk/models).
102+
* To add map a new language to the commands, manual translation is required. Add locale code to `commands.json`, with the specified language code.
103+
104+
## Logging & Selectors
105+
106+
* Locator priority for click events:
107+
1. `href`
108+
2. `id`
109+
3. `className`
110+
4. Computed `xPath`
111+
112+
---
113+
114+
# Architecture
115+
116+
## Components
117+
118+
![Components Diagram](assets/imgs/components-diagram.jpg)
119+
120+
* **Frontend (Chrome Extension)**: UI panel + event listener + WebSocket client
121+
* **Backend Service**: HTTP API + thread dispatcher spawning:
122+
123+
* Eye-Tracking Thread (Tobii SDK)
124+
* Voice Thread (Vosk)
125+
* Logging Thread (Gherkin generator)
126+
* **Test Runner**: Kraken/WebdriverIO integration for replay
127+
128+
## Context
129+
130+
![Context Diagram](assets/imgs/diagram-context.png)
131+
132+
---
133+
134+
# Use Cases
135+
136+
1. **Accessible Browsing**: Hands-free navigation for users with disabilities.
137+
2. **Automated Testing (A-TDD)**: Generate and replay acceptance tests for regression.
138+
3. **Accessibility Evaluation**: Collect interaction data for consultants and researchers.
139+
4. **Intelligent Agents**: [TBD] Enable bots to navigate and test web UIs via gaze & speech.
140+
9141

_config.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,23 @@ title: EyeNav
55
tsdllogo: /assets/imgs/horizontalLightBrackgrounds.png
66

77
navigation:
8+
- title: Purpose
9+
link: /purpose.html
810
- title: Video
9-
link: /video.hmtl
11+
link: /video.html
12+
- title: Publications
13+
link: /publications.html
14+
- title: Summary
15+
link: /summary.html
16+
- title: Installation
17+
link: /installation.html
18+
- title: Usage
19+
link: /usage.html
20+
- title: Configuration
21+
link: /configuration.html
22+
- title: Architecture Overview
23+
link: /architecture.html
24+
- title: Use Cases
25+
link: /use-cases.html
26+
- title: License
27+
link: /license.html

_layouts/default.html

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ <h1 class="title-logo" align="center" style="margin-bottom: 10px;">
2929

3030
{% if site.show_downloads %}
3131
<ul class="downloads" style="margin-bottom: 7px">
32-
<li><a href="{{ site.github.zip_url }}">Download <strong>ZIP File</strong></a></li>
33-
<li><a href="{{ site.github.tar_url }}">Download <strong>TAR Ball</strong></a></li>
3432
<li><a href="{{ site.github.repository_url }}">View On <strong>GitHub</strong></a></li>
3533
</ul>
3634
{% endif %}
@@ -42,9 +40,17 @@ <h3 style="margin-bottom: 7px">Team Members</h3>
4240
</ul>
4341
<h3 style="margin-bottom: 7px">Table of Contents</h3>
4442
<ol class="toc">
45-
<!-- TODO -->
46-
<li><a href="#purpose">Purpose</a></li>
47-
<li><a href="#video">Video</a></li>
43+
<ul>
44+
<li><a href="#purpose">Purpose</a></li>
45+
<li><a href="#video">Video</a></li>
46+
<li><a href="#summary">Summary</a></li>
47+
<li><a href="#installation">Installation</a></li>
48+
<li><a href="#usage">Usage</a></li>
49+
<li><a href="#configuration">Configuration</a></li>
50+
<li><a href="#architecture-overview">Architecture Overview</a></li>
51+
<li><a href="#use-cases">Use Cases</a></li>
52+
</ul>
53+
4854
<!-- <li><a href="#temporal-anchor">Temporal Anchor</a></li> -->
4955
</ol>
5056
</header>

assets/imgs/components-diagram.jpg

73 KB
Loading

assets/imgs/diagram-context.png

268 KB
Loading

assets/imgs/logoSquare.png

34 KB
Loading

assets/imgs/sequence-diagram.jpg

110 KB
Loading

assets/imgs/ss-1.png

2.63 MB
Loading

assets/imgs/ss-2.png

1.77 MB
Loading
445 KB
Loading

0 commit comments

Comments
 (0)