#include <bits/stdc++.h>
using namespace std;
const int mxN = 2e5;
const int MOD = 1e9 + 7;
template <typename ForwardIterator, typename T>
ForwardIterator first_less_than(ForwardIterator first, ForwardIterator last,
                                T value) {
  auto it = std::lower_bound(first, last, value);
  return (it == first ? last : --it);
}
bool sortbysec(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.second < b.second);
}
string s[51];
long long c = 0;
bool valid(long long x, long long y, long long n, long long m) {
  if (x < 0 || y < 0 || x >= n || y >= m)
    return false;
  else
    return true;
}
void block(long long x, long long y, long long n, long long m) {
  if (valid(x - 1, y, n, m)) {
    if (s[x - 1][y] == '.') s[x - 1][y] = '#';
  }
  if (valid(x + 1, y, n, m)) {
    if (s[x + 1][y] == '.') s[x + 1][y] = '#';
  }
  if (valid(x, y + 1, n, m)) {
    if (s[x][y + 1] == '.') s[x][y + 1] = '#';
  }
  if (valid(x, y - 1, n, m)) {
    if (s[x][y - 1] == '.') s[x][y - 1] = '#';
  }
}
bool vis[60][60];
long long cgg = 0, cbb = 0;
bool go_to_last(long long x, long long y, long long n, long long m) {
  if (!valid(x, y, n, m) || vis[x][y] == 1 || s[x][y] == '#') return false;
  if (s[x][y] == 'B') cbb++;
  if (s[x][y] == 'G') cgg++;
  vis[x][y] = 1;
  go_to_last(x - 1, y, n, m);
  go_to_last(x + 1, y, n, m);
  go_to_last(x, y + 1, n, m);
  go_to_last(x, y - 1, n, m);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long t;
  cin >> t;
  while (t--) {
    long long n, m, i, j;
    cin >> n >> m;
    for (i = 0; i < n; i++) {
      cin >> s[i];
    }
    long long cb = 0, cg = 0;
    vector<pair<long long, long long>> bad_in, good_in;
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (s[i][j] == 'B') {
          cb++;
          bad_in.push_back({i, j});
        }
        if (s[i][j] == 'G') {
          cg++;
          good_in.push_back({i, j});
        }
      }
    }
    if (cg == 0) {
      cout << "YES"
           << "\n";
      continue;
    }
    for (i = 0; i < bad_in.size(); i++) {
      block(bad_in[i].first, bad_in[i].second, n, m);
    }
    if (s[n - 1][m - 1] == '#') {
      cout << "NO"
           << "\n";
      continue;
    }
    bool ok = true;
    if (0) {
      for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
          cout << s[i][j] << " ";
        }
        cout << "\n";
      }
      cout << "\n";
    }
    memset(vis, 0, sizeof(vis));
    cgg = 0, cbb = 0;
    go_to_last(n - 1, m - 1, n, m);
    if (cbb) {
      cout << "NO"
           << "\n";
    } else if (cgg == cg)
      cout << "YES"
           << "\n";
    else
      cout << "NO"
           << "\n";
  }
}
