Commit Graph

21 Commits

Author SHA1 Message Date
Alex Hunt
e7591b2a81 Set clearLogs accelerator for log-rendering plugins
Summary:
Sets a default key binding of `ctrl+l` to clear the screen within built-in Flipper plugins which display a log view.

Motivation: A small quality of life improvement for developers used to the default "clear screen" binding. This makes our log-rendering plugins consistent with other native apps such as terminals, Chrome DevTools, and many others.

Reviewed By: mweststrate

Differential Revision: D37782638

fbshipit-source-id: 0a85b930faaa0e9468d5391f15092aad7b6057ee
2022-07-13 01:38:55 -07:00
Pascal Hartig
e1d15fee15 Disable flaky test
Summary:
Test is flaky, causing failures on master.

{P498157360}

Reviewed By: lblasa

Differential Revision: D36004615

fbshipit-source-id: 484451f83459e42d459ed548525055d230e07734
2022-05-03 08:52:18 -07:00
Anton Kastritskiy
48d43c7367 rename from ts to tsx in pkg and pkg-lib
Summary: mass rename files

Reviewed By: passy

Differential Revision: D33890034

fbshipit-source-id: 1c654a4f7f5b83eaa56a8c11df863003e8d7bed7
2022-01-31 06:22:56 -08:00
almouro
3eb53f5987 Fix desktop template tests (#3327)
Summary:
When creating a brand new Flipper desktop plugin, the tests don't pass

### To Reproduce

```
npx flipper-pkg init
cd flipper-plugin-new
yarn jest
```

The test are not passing.
It would seem that we have 2 issues since this commit: e46fcba0b2 (diff-26467a831e67f87a2bd99be5b62a71a6e3e4e7f86135c11ccede9a02e58c44feR48)

#### 1. `electronRequire` is not defined

![image](https://user-images.githubusercontent.com/4534323/150385278-29527a4d-4783-4902-aeea-986b3c634a29.png)

Adding:
```ts
// ts-ignore
global.electronRequire = require;
```
fixes the issue of course like [here](e46fcba0b2 (diff-a283d77d8667b28aec5319fe5671a91489485a683898efedf9441b816c84a447R15)) but might not be very ideal
When fixing this, we hit a second issue:

#### 2. Hooks cannot be defined inside tests

![image](https://user-images.githubusercontent.com/4534323/150385722-c0604cfc-33ef-4d8e-a8fd-d60042a87699.png)

This is because we now require `testing-library/react` on the fly: e46fcba0b2 (diff-26467a831e67f87a2bd99be5b62a71a6e3e4e7f86135c11ccede9a02e58c44feR198)
which will run `afterEach` if defined: 071a6fdc1d/src/index.js (L12)

A non ideal fix is to require `require("testing-library/react");` before running the test

## Changelog

Fix: ensure desktop plugin template tests run

Pull Request resolved: https://github.com/facebook/flipper/pull/3327

Test Plan:
I've cloned the repo and run:

```
cd flipper/desktop/pkg
yarn
cd ../../..
./flipper/desktop/pkg/bin/run init
```
I run the tests on the newly package created and they're now good

![image](https://user-images.githubusercontent.com/4534323/150391527-d834ec5b-57d8-4948-b9f3-17ade4eda79b.png)

## Side note

The fixes are not great, if you guys have better ones to suggest, really addressing the root cause of the issue, I'll happily close the PR

Also it's so easy to test desktop plugins with the awesome work you've done �, it'd be sad if the community could not totally benefit from it.
Since I had this issue before (https://github.com/facebook/flipper/pull/3039), I'd be really happy to help (if given some directions 🙏) set up a test to ensure a plugin generated is always well set up.

Reviewed By: passy

Differential Revision: D33713611

Pulled By: aigoncharov

fbshipit-source-id: 43834b30f24c2549d80923d2194487b9f9e6a1ae
2022-01-21 13:37:37 -08:00
Andres Suarez
79023ee190 Update copyright headers from Facebook to Meta
Reviewed By: bhamodi

Differential Revision: D33331422

fbshipit-source-id: 016e8dcc0c0c7f1fc353a348b54fda0d5e2ddc01
2021-12-27 14:31:45 -08:00
almouro
5b603ab976 Ensure desktop plugin template tests run (#3039)
Summary:
I've decided to migrate [a desktop plugin](https://github.com/bamlab/react-native-performance) to Sandy.
When doing so, I decided to rise to the challenge from the [Flipper docs](https://fbflipper.com/docs/tutorial/js-custom#testing-plugin-logic):  `we are going to pretend that we always write unit tests first` 😅

However, I've realized that when creating a plugin with `npx flipper-pkg init`, running `yarn jest` directly after creation actually fails.

There are 3 issues solved in the different commits:
1. an absolute import seem to not be resolved, since all the other imports were relative in the file, I changed it as well

2. some dependencies are missing.
They used to be included in the `flipper` dependency but when migrating to use `flipper-plugin` instead, they're not present anymore.
I don't think this is an ideal fix, I would believe a dependency like a `flipper-dev-environment` including all of those would be more appropriate. So I'm open to suggestions to fix/remove of course

3. jest.config needs to be fixed to run in jsdom environment and ensure we can test the react component

## Changelog

Fix: ensure desktop plugin template tests run

Pull Request resolved: https://github.com/facebook/flipper/pull/3039

Test Plan:
I've cloned the repo and run:

```
cd flipper/desktop/pkg
yarn
cd ../../..
./flipper/desktop/pkg/bin/run init
```
I run the tests on the newly package created, but it actually still failed because of the first issue (since it still installed `flipper-plugin` from npm`)

However, by adding this patch, it now runs!
```patch
 diff --git a/node_modules/flipper-plugin/lib/ui/data-table/DataTable.js b/node_modules/flipper-plugin/lib/ui/data-table/DataTable.js
index 2e07ff5..ff3181d 100644
 --- a/node_modules/flipper-plugin/lib/ui/data-table/DataTable.js
+++ b/node_modules/flipper-plugin/lib/ui/data-table/DataTable.js
@@ -39,7 +39,7 @@ const useAssertStableRef_1 = require("../../utils/useAssertStableRef");
 const PluginContext_1 = require("../../plugin/PluginContext");
 const lodash_1 = require("lodash");
 const useInUnitTest_1 = require("../../utils/useInUnitTest");
-const createDataSource_1 = require("flipper-plugin/src/state/createDataSource");
+const createDataSource_1 = require("../../state/createDataSource");
 function DataTable(props) {
     var _a, _b;
     const { onRowStyle, onSelect, onCopyRows, onContextMenu } = props;
```

Reviewed By: aigoncharov

Differential Revision: D32358207

Pulled By: mweststrate

fbshipit-source-id: 7761b4150c24dd5379a24c3c1deeb78bf3dda4ee
2021-11-11 12:07:49 -08:00
Michel Weststrate
f7732ed4fd Insert a proper flipper-plugin version
Summary:
`flipper-pkg init` would always introduce `flipper-plugin` peer with version `latest`. Since that can never be checked against the current flipper version, it always generated a warning. Updated the init process to take the version the plugin was generated with as base version instead.

Note that in the test the version will always display as 0.0.0, will double check after release that the proper version will show up when running from npx, but don't see a reason why not (famous last words)

Reviewed By: nikoant, priteshrnandgaonkar

Differential Revision: D28992531

fbshipit-source-id: c32aad1650f575f790c2e04d089104b7a616d26f
2021-06-10 04:45:18 -07:00
Pascal Hartig
bca8030df8 Dep bump
Summary:
Daily bump keeps the yada yada. Only patch updates or safe ones.

allow-large-files

Reviewed By: nikoant

Differential Revision: D28636754

fbshipit-source-id: d2a8c7fc0779bea30ff6532ae076694ce0e1fffa
2021-05-25 08:53:36 -07:00
Anton Nikolaev
68248a7c63 Device plugin management (4/n): Allow choosing "device" plugin type in "flipper-pkg init"
Summary:
Added option to bootstrap device plugin in "flipper-pkg".

Changelog: "flipper-pkg init" can now be used to bootstrap device plugins

Reviewed By: mweststrate

Differential Revision: D26389429

fbshipit-source-id: 90773011bd50289004cd747111e1787402840922
2021-02-16 10:50:19 -08:00
Michel Weststrate
2f15ef883d Improve OSS plugin template
Summary:
Based https://github.com/facebook/flipper/issues/1866 and running `npx flipper-plugin init` locally. Doesn't address the original issue

Fixes #1866

Reviewed By: passy

Differential Revision: D26147089

fbshipit-source-id: 608dc92c5ccc741b6e760ea5a5034f9444e951b7
2021-02-01 02:28:34 -08:00
Michel Weststrate
cc438e60ad Update public docs to use Sandy
Summary: This updates the docs of Flipper to use Sandy, rather than `FlipperPlugin` class. Restructured the docs a bit as a result.

Reviewed By: passy

Differential Revision: D24991285

fbshipit-source-id: 66d5760c25cf9cf3983515433dfd64348d51db3d
2020-11-16 13:10:32 -08:00
Michel Weststrate
dc82ec2885 flipper-pkg template will now use sandy
Summary:
This diff updates plugin scaffolding by using Sandy and closely following the internal Scarf templates (see D24949452, D24949452)

By using `flipper-plugin`, it is now also possible to write unit tests for a plugin, and the default infra for that is generated (babel / jest)

For now there is still a dependency on `flipper` to support fancy components not yet available in Sandy, this will be updated in the future: T79632585

Changelog: `flipper-pkg init` now uses the new Sandy plugin infrastructure ant Ant.design component system

Reviewed By: nikoant

Differential Revision: D24950080

fbshipit-source-id: afc5e7ac728b20cb84fdbbdcb76cd45968736c01
2020-11-16 13:10:32 -08:00
Michel Weststrate
191df465b7 Updated to typescript 4
Summary:
allow-large-files

Updated to typescript 4. Note that this is no new major, the way TS numbers is that 4.0 is simply the number after 3.9 (so they refuse to use 3.10).

Primarily reason is that it allows us to use `/** deprecated */`. although there are definitely more interesting improvements

Reviewed By: passy, nikoant

Differential Revision: D23869445

fbshipit-source-id: 54e251b398b8698d9b18898ce66c3203b32aa356
2020-09-24 05:58:29 -07:00
Anton Nikolaev
7e84c8e880 Support plugins that contain a scope in their name (#1427)
Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/1427

Reviewed By: mweststrate

Differential Revision: D22868784

fbshipit-source-id: c332e5b05e3fccb74cf5fdcdecf15b8f2e8c5006
2020-08-04 10:52:59 -07:00
Anton Nikolaev
d27fa34505 Added module for test-utilities used across all packages
Summary: Added new package with test utilities re-used by other packages

Reviewed By: mweststrate

Differential Revision: D21949629

fbshipit-source-id: 8bfa959401669dc8911a1f647f417cafd92c2e4b
2020-06-09 04:58:37 -07:00
Anton Nikolaev
ec646f365f Fix tests runInit.node.ts failing on Windows (#1198)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1198

Normalize paths so snapshots look the same on mac and win

Reviewed By: passy

Differential Revision: D21722773

fbshipit-source-id: 4a12117d3ec0fb57cdfc7c5bb06a5c0835412a5f
2020-05-26 11:58:59 -07:00
Michel Weststrate
49b4022228 added tests for generated template files
Summary:
Created a test that snapshots the generated files, so that we can capture accidental regressions when generating files.

Also made the package id to package name a bit more robust

Reviewed By: jknoxville

Differential Revision: D21619633

fbshipit-source-id: 88ffb127e050d840df9ccd4b15ba29a71f341975
2020-05-19 05:33:35 -07:00
Anton Nikolaev
1cf3c30b7c "migrate" command for flipper-pkg tool
Summary: "migrate" command for easy migration of existing Flipper plugins to the specification version 2.

Reviewed By: passy

Differential Revision: D21253913

fbshipit-source-id: 9edb170fbaa10e9c3f670d5d68e69f4f6106c151
2020-04-28 05:01:06 -07:00
Anton Nikolaev
deb0daa7f3 Fix tests on Windows (#1072)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1072

Once again fixed GH windows jobs which are currently failing

Reviewed By: mweststrate

Differential Revision: D21277273

fbshipit-source-id: 0df6ee7eb00b8f72bd6952747fa0e25e787ca335
2020-04-28 04:58:04 -07:00
Anton Nikolaev
21c574ac80 "lint" command for flipper-pkg tool
Summary:
Implemented json schema for flipper plugin package.json and used it for validation in "flipper-pkg lint" command.

Nice thing about json schema is that it not only allows to validate json, but also can be referenced using "$schema" property in json so IDEs like VSCode can find it and use for code completion, validation and to show properties documentation. I'm going to deploy the schema as a part of documentation website so it can be referenced as https://fbflipper.com/schemas/plugin-package/v2.json.

Also the "$schema" field can be used instead of "specVersion" to determine the specification according to which the plugin is defined. E.g., if specification version 3 would be created, it will be described in schema https://fbflipper.com/schemas/plugin-package/v3.json, etc.

Reviewed By: passy

Differential Revision: D21228294

fbshipit-source-id: f21351e584ef936a7d6b314436448489691f83a6
2020-04-27 17:34:11 -07:00
Anton Nikolaev
85c13bb1f3 Move desktop-related code to "desktop" subfolder (#872)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/872
Move all the JS code related to desktop app to "desktop" subfolder.

The structure of "desktop" folder:
- `src` - JS code of Flipper desktop app executing in Electron Renderer (Chrome) process. This folder also contains all the Flipper plugins in subfolder "src/plugins".
- `static` - JS code of Flipper desktop app bootstrapping executing in Electron Main (Node.js) process
- `pkg` - Flipper packaging lib and CLI tool
- `doctor` - Flipper diagnostics lib and CLI tool
- `scripts` - Build scripts for Flipper desktop app
- `headless` - Headless version of Flipper app
- `headless-tests` - Integration tests running agains Flipper headless version

Reviewed By: passy

Differential Revision: D20249304

fbshipit-source-id: 9a51c63b51b92b758a02fc8ebf7d3d116770efe9
2020-03-14 14:35:17 -07:00