-
Notifications
You must be signed in to change notification settings - Fork 52
Description
Background
Describe the current state of the project and the main problem or issue being addressed by the proposed idea. Details should include links and references.
- Cytosnap is a package to render and export Cytoscape.js graphs as various image formats.
- Cytosnap currently uses Puppeteer to do this, and Puppeteer has several maintenance and compatibility issues.
- Playwright is a newer alternative to Puppeteer, which would address these issues.
- Skia Canvas is a lighter-weight alternative to Puppeteer and Playwright, which could simplify deployment. Skia Canvas only supports rendering the HTML5
<canvas>
API as an exported image, whereas Playwright includes a full browser environment.
Goal
Describe what the end result of the GSoC project should be.
- Refactor Cytosnap to use Playwright instead of Puppeteer.
- Add Playwright tests to ensure that the refactored Cytosnap project is working properly according to the Cytosnap public API.
- Configure GitHub Actions to automatically run the new Playwright tests on new commits and pull requests.
- Add support for using Skia Canvas.
- This would be enabled with an option like
engine: 'skia'
. - Use Playwright if the user specifies
engine: 'playwright'
. Cytosnap should support both. - Mark Skia Canvas and Playwright as optional dependencies. The user can decide which to install based on which he wants to use in his project.
- Add automated tests using Mocha for
engine: 'skia'
.
Difficulty Level: Easy/Medium/Hard
Give a difficulty level, either Easy, Medium or Hard. Make sure to tag the issue with this difficulty.
Describe with a sentence or two why the project is this difficulty level.
Easy if:
- The applicant has prior experience with JS and Node.js.
- The applicant has experience with JS build systems, like Webpack or Vite.
Size and Length of Project
Define the project commitment as either “small: 90 hours", "medium: 175 hours" or "large: 350 hours" and the timeline between 10 and 22 weeks, for example:
- medium: 175 hours
- 12 weeks
Note that the project length for small projects should be 10-12 weeks.
Skills
List skills/technologies that the student should be familiar with. Also tag the issue with these.
Essential skills:
- JS (significant experience with the language & modern tooling)
Nice to have skills, from most to least important:
- The HTML5 canvas API
- Headless browsers / rendering: Puppeteer, Playwright, Skia Canvas, Selenium, etc.
- Build systems like Webpack or Vite
- GitHub Actions
Public Repository
Link to a public, open-source repository for your project. All code from accepted projects must be open source and public throughout the coding period and beyond.
https://github.com/cytoscape/cytosnap
Potential Mentors
List the names and email contacts for potential mentors.
- Max Franz
- Mike Kucera
- Gary Bader