text: 'use strict';
  
  // These flags can be in a @gate pragma to declare that a test depends on
  // certain conditions. They're like GKs.
  //
  // Examples:
  //   // @gate enableSomeAPI
  //   test('uses an unstable API', () => {/*...*/})
  //
  //   // @gate __DEV__
  //   test('only passes in development', () => {/*...*/})
  //
  // Most flags are defined in ReactFeatureFlags. If it's defined there, you don't
  // have to do anything extra here.
  //
  // There are also flags based on the environment, like __DEV__. Feel free to
  // add new flags and aliases below.
  //
  // You can also combine flags using multiple gates:
  //
  //   // @gate enableSomeAPI
  //   // @gate __DEV__
  //   test('both conditions must pass', () => {/*...*/})
  //
  // Or using logical operators
  //   // @gate enableSomeAPI && __DEV__
  //   test('both conditions must pass', () => {/*...*/})
  //
  // Negation also works:
  //   // @gate !deprecateLegacyContext
  //   test('uses a deprecated feature', () => {/*...*/})
  
  // These flags are based on the environment and don't change for the entire
  // test run.
  const environmentFlags = {
    __DEV__,
    build: __DEV__ ? 'development' : 'production',
  
    // TODO: Should "experimental" also imply "modern"? Maybe we should
    // always compare to the channel?
    experimental: __EXPERIMENTAL__,
    // Similarly, should stable imply "classic"?
    stable: !__EXPERIMENTAL__,
  
    // Use this for tests that are known to be broken.
    FIXME: false,
  
    // Turn these flags back on (or delete) once the effect list is removed in
    // favor of a depth-first traversal using `subtreeTags`.
    dfsEffectsRefactor: true,
    enableUseJSStackToTrackPassiveDurations: false,
  };
  
  function getTestFlags() {
    // These are required on demand because some of our tests mutate them. We try
    // not to but there are exceptions.
    const featureFlags = require('shared/ReactFeatureFlags');
  
    // TODO: This is a heuristic to detect the release channel by checking a flag
    // that is known to only be enabled in www. What we should do instead is set
    // the release channel explicitly in the each test config file.
    const www = featureFlags.enableSuspenseCallback === true;
    const releaseChannel = www
      ? __EXPERIMENTAL__
        ? 'modern'
        : 'classic'
      : __EXPERIMENTAL__
      ? 'experimental'
      : 'stable';
  
    // Return a proxy so we can throw if you attempt to access a flag that
    // doesn't exist.
    return new Proxy(
      {
        // Feature flag aliases
        old: featureFlags.enableNewReconciler === false,
        new: featureFlags.enableNewReconciler === true,
  
        channel: releaseChannel,
        modern: releaseChannel === 'modern',
        classic: releaseChannel === 'classic',
        source: !process.env.IS_BUILD,
        www,
  
        ...featureFlags,
        ...environmentFlags,
  
        // FIXME: www-classic has enableCache on, but when running the source
        // tests, Jest doesn't expose the API correctly. Fix then remove
        // this override.
        enableCache: __EXPERIMENTAL__,
      },
      {
        get(flags, flagName) {
          const flagValue = flags[flagName];
          if (flagValue === undefined && typeof flagName === 'string') {
            throw Error(
              `Feature flag "${flagName}" does not exist. See TestFlags.js ` +
                'for more details.'
            );
          }
          return flagValue;
        },
      }
    );
  }
  console.log('Test Sucessfully');
  
  exports.getTestFlags = getTestFlags;
  