#include <bits/stdc++.h>
using namespace std;
struct _ {
  ios_base::Init i;
  _() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    cout << fixed << setprecision(10);
  }
} ___;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
char arr[60][60];
signed main() {
  long long int __, _ = 0;
  cin >> __;
  for (; _++ < __;) {
    long long int n, m;
    cin >> n >> m;
    for (long long int i = 0; i++ < n;)
      for (long long int j = 0; j++ < m;) cin >> arr[i][j];
    long long int flag = 0;
    long long int gg = 0;
    for (long long int i = 0; i++ < n;)
      for (long long int j = 0; j++ < m;) {
        if (arr[i][j] == 'B') {
          if (arr[i + 1][j] == '.' and i + 1 <= n) arr[i + 1][j] = '#';
          if (arr[i - 1][j] == '.' and i - 1 > 0) arr[i - 1][j] = '#';
          if (arr[i][j + 1] == '.' and j <= m) arr[i][j + 1] = '#';
          if (arr[i][j - 1] == '.' and j > 0) arr[i][j - 1] = '#';
        }
        if (arr[i][j] == 'G') gg++;
      }
    if (gg == 0)
      cout << "Yes" << '\n';
    else {
      const long long int fx[] = {+1, -1, +0, +0};
      const long long int fy[] = {+0, +0, +1, -1};
      if (arr[n][m] == '#')
        cout << "No" << '\n';
      else {
        vector<vector<long long int>> vis(n + 5,
                                          vector<long long int>(m + 5, 0));
        queue<pair<long long int, long long int>> q;
        q.push({n, m});
        vis[n][m] = 1;
        while (!q.empty()) {
          auto xx = q.front();
          q.pop();
          for (long long int i = 0; i < 4; i++) {
            long long int x = xx.first + fx[i];
            long long int y = xx.second + fy[i];
            if (!vis[x][y] and x > 0 and x <= n and y > 0 and y <= m and
                (arr[x][y] == 'G' or arr[x][y] == 'B' or arr[x][y] == '.')) {
              q.push({x, y});
              vis[x][y] = 1;
            }
          }
        }
        long long int f = 0;
        for (long long int i = 0; i++ < n;)
          for (long long int j = 0; j++ < m;) {
            if (arr[i][j] == 'G' and !vis[i][j]) f = 1;
            if (arr[i][j] == 'B' and vis[i][j]) f = 1;
          }
        if (f)
          cout << "No" << '\n';
        else
          cout << "Yes" << '\n';
      }
    }
  }
}
