RotBolt / Flaker

A flaky network simulator for your mobile app

Home Page:https://rotbolt.github.io/Flaker/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐Ÿšง Flaker ๐Ÿšง

flaker build Maven Central

Developing a mobile app that performs flawlessly in the real world requires thorough testing under a variety of network conditions. Introducing Flaker โ€“ your assistant tool for recreating real-world network scenarios directly in your mobile app development environment. ๐Ÿ“ฑ๐Ÿ’ก

What is Flaker?

Flaker is a network simulator designed to make your mobile app development process smoother and more efficient. With Flaker, you can effortlessly emulate a wide range of network conditions, enabling you to fine-tune your app's performance and ensure it delivers an exceptional user experience under any circumstance. ๐ŸŒ๐Ÿ› ๏ธ

Key Features:

Experience Slow Networks ๐Ÿข

Ever wondered how your app would perform on a slow and sluggish network? With Flaker, you can replicate these scenarios with ease. Test your app's responsiveness and optimize its behavior under adverse network conditions. ๐Ÿš€๐ŸŒ

Emulate Flaky Networks ๐Ÿ“ถ

Network connections in the real world are rarely stable. Flaker allows you to introduce fail percentage and variance controls, mirroring the unpredictable nature of network connections. Gain a firsthand understanding of the challenges your mobile app might face and ensure it remains resilient. ๐Ÿ”ฎ๐Ÿ”Œ

Focused Impact ๐ŸŽฏ

Flaker is designed to impact only your app's network conditions, leaving your device's overall network functionality undisturbed. This means you can test and fine-tune your app's performance without affecting your entire device's connectivity. ๐Ÿ“ก๐Ÿ”

Who Can Benefit from Flaker?

Whether you're a mobile app developer looking to enhance user experiences or a tester seeking to validate your app's resilience, Flaker provides an intuitive and indispensable tool within your development workflow. Elevate your testing strategies and boost your app's performance with Flaker.

Flaker empowers you to:

โœ… Test under various network conditions

โœ… Optimize your app for slow networks

โœ… Prepare your app for flaky network connections

โœ… Ensure your app's stability and reliability

โœ… Enhance user satisfaction and retention

Demo

๐Ÿ“บ Check out the to see Flaker in action.

flaker-android-demo.mov

Usage

Please refer to the ๐Ÿ“š docs for detailed usage instructions.

Built with

Kotlin: ๐Ÿš€ The primary programming language.

Kotlin Multiplatform: ๐Ÿ“ฑ๐Ÿ Sharing common logic across Android and iOS.

Jetpack Compose: ๐Ÿ–ผ๏ธ For building the UI for the Android companion app. Supports dynamic theming.

SqlDelight: ๐Ÿ“Š For a shared database and persistence layer between multiple platforms.

Jetpack DataStore: ๐Ÿ“ฆ For the shared persistence layer to store user preferences and configuration of Flaker.

Okhttp: ๐Ÿ“ก For creating Flaker for Android apps using Okhttp3 for networking.

Ktor: ๐ŸŒ For creating Flaker targeting both Android and iOS apps using Ktor for networking. (๐Ÿšง In Progress)

SwiftUI: ๐Ÿ For building the UI for the iOS UI. (๐Ÿšง In Progress)

Roadmap

  • flaker-android-okhttp
  • flaker-android-ktor
  • flaker-ios-ktor

Find this repository useful?

Support it by joining stargazers for this repository. โญ

Contributing

If you've found an error in this sample, please ๐Ÿšฉ file an issue.

Patches are encouraged and may be submitted by forking this project and submitting a pull request. Since this project is still in its very early stages, if your change is substantial, please raise an issue first to discuss it. ๐Ÿค

License

Copyright 2023 Rohan Maity

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.